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
     

  • 相关阅读:
    SVN服务器搭建和使用(三)
    SVN服务器搭建和使用(二)
    SVN服务器搭建和使用(一)
    mysql和oracle分页
    Windows许可证 即将过期
    Java 设计模式学习笔记1——策略模式(Duck例子)
    java 抽象类与接口
    java servlet练习测试
    windows 添加开始菜单
    visio连接线设置
  • 原文地址:https://www.cnblogs.com/liubingna/p/2936815.html
Copyright © 2011-2022 走看看