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
     

  • 相关阅读:
    nginx.conf配置
    分组查询最近时间的记录
    jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解
    form表单的onsubmit()问题 集合
    vs代码快捷键
    localStorage存储方法
    display和visibility的区别
    Javascript Math ceil()、floor()、round()三个函数的区别
    sqlservere小计合计总计
    CentOS 7.1 图形化安装
  • 原文地址:https://www.cnblogs.com/liubingna/p/2936815.html
Copyright © 2011-2022 走看看