• 一个js变量作用域的例子


    下面运行结果是什么?

    function ShowMessage(msg) {
    this.mymessage = msg;
    var alertMessage = function() {
    alert(this.mymessage);

    }
    alertMessage();
    }
    var mymessage = new ShowMessage("Hello");

    答案: undefined

    改变代码

    function ShowMessage(msg) {
    this.mymessage = msg;
    this.alertMessage = function() {
    alert(this.mymessage);

    }
    this.alertMessage();
    }
    var mymessage = new ShowMessage("Hello");

    答案: Hello

    再看另外三个例子

    JavaScript code1

    var a = 10;
      function test() {
        a = 100;
        alert(a+'.1');
        alert(this.a+'.2');
        var a;
        alert(a+'.3');
      }
     test();
     
    JavaScript code2
    var tt = 'aa';
    function test(){
    alert(tt+'.4');
    var tt = 'dd';
    alert(tt+'.5');
    }
    test();

    前面2个相信大家也许可以答对,
    但是这个呢?

    JavaScript code3
    var a = 10;
      function test() {
        a = 100;
        alert(a+'.1');
        alert(this.a+'.2');
        var a;
        alert(a+'.3');
      }
     test();
    //这里是分界线
     var a = 'aa';
    function test(){
    alert(a+'.4');
    var a = 'dd';
    alert(a+'.5');
    }
    test(); 
     
    主要是作用域问题
    var a = 10;
      function test() {
        a = 100;
        alert(a+'.1');
        alert(this.a+'.2');
        var a;
        alert(a+'.3');
      }
     test();
    这儿只需记住同一片作用域里面a变量是同一个变量,一旦函数内定义了局部变量a,函数内所有a就都是这个局部变量a,函数内this为window,所以this.a会访问到全局变量a,故依次为100.1,10.2,100.3

     var a = 'aa';
    function test(){
    alert(a+'.4');
    var a = 'dd';
    alert(a+'.5');
    }
    test(); 

    与上原理同,定义a后函数内的a都是同一个
    第一处还未赋值,为undefined,应该是弹出undefined.4,第二处不用说dd.5
     
    资料来源:http://bbs.csdn.net/topics/390380897
     

  • 相关阅读:
    [树形dp] Jzoj P5814 树
    [快速幂][数学][dp] Jzoj P5813 计算
    [差分] Jzoj P5812 区间
    [贪心][模拟] Jzoj P5811 简单的填数
    如何用c++发出音乐
    网络流初步详解
    【纪中模拟2019.08.01】【JZOJ2644】数列
    【纪中模拟2019.08.02】【JZOJ1308】取数游戏
    2019.08纪中 XC谈OI学习方法论
    C++STL容器
  • 原文地址:https://www.cnblogs.com/liubingna/p/2936815.html
Copyright © 2020-2023  润新知