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
     

  • 相关阅读:
    P1031 均分纸牌
    P1130 红牌
    P1094 纪念品分组
    win32 公用对话框
    高性能完成端口socket服务(IOCP)
    一个简单的调试日志功能
    UI设计工具
    windows平台(不包括ARM的CE)通用的压缩和解压缩
    win api 实现 AES加密、解密,获取HASH
    win32sdk 编程整理的些资料
  • 原文地址:https://www.cnblogs.com/liubingna/p/2936815.html
Copyright © 2011-2022 走看看