zoukankan      html  css  js  c++  java
  • 一个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
     

  • 相关阅读:
    Linux文件属性
    [Oracle] Listener的动态注册
    jQuery easyUI Pagination控件自定义div分页(不用datagrid)
    桂林电子科技大学出校流量控制器Android版1.0.0
    php使用check box
    Python windows ping
    Python selenium chrome 环境配置
    Linux wget auto login and backup database
    PyQt4 ShowHMDB show sqlite3 with QTableWidget summary
    PyQt4 py2exe 打包 HardwareManager
  • 原文地址:https://www.cnblogs.com/liubingna/p/2936815.html
Copyright © 2011-2022 走看看