下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Web前端:JavaScript中的var与作用域

作者:uakora     来源: https://www.cnblogs.com/uakora/p/12676607.html点击数:1464发布时间: 2020-05-10 14:19:52

标签: JavascriptWeb网页设计

Web开发

  作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

  作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。

  Javascript中没有块级作用域,“块级作用域”中声明的变量将被添加到当前的执行环境中

  if(true){

  varcolor="blue";

  }

  console.log(color);//"blue"

  functiontest(){

  if(true){

  varcolor="blue";//(当前执行环境为函数test的局部作用域,函数外部无法访问,内部可以访问)

  }

  console.log("blue");//"blue"

  functioninner(){

  console.log(color);//"blue"

  }

  inner();

  }

  test();

  console.log(color);//ReferenceError:colorisnotdefined

  在JavaScript中,由for语句创建的变量,即使在for循环执行结束后,也依旧会存在于循环外部的执行环境中。

  for(vari=0;i<10;i++){

  varcolor="blue";

  }

  console.log(i);//10

  console.log(color);//"blue"

  使用var声明的变量会自动被添加到最接近的环境中。在函数内部,最接近的环境就是函数的局部环境;在with语句中,最接近的环境是函数环境。

  如果初始化变量时没有使用var声明,该变量会自动被添加到全局环境。

  functionadd(num1,num2){

  varsum=num1+num2;//用var声明

  returnsum;

  }

  console.log(add(10,20));//30

  console.log(sum);//ReferenceError:sumisnotdefined

  functionadd(num1,num2){

  sum=num1+num2;//没有使用var声明

  returnsum;

  }

  console.log(add(10,20));//30

  console.log(sum);//30

  如果局部环境中存在着同名标识符,就不会使用位于父环境中的标识符。

  varcolor="blue";

  functiongetColor(){

  console.log(color);//undefined(变量提升)

  varcolor="red";

  console.log(color);//red

  console.log(window.color);//blue

  returncolor;

  }

  console.log('return:',getColor());//return:red

  console.log(color);//blue

  对于对象而言(其他也是一样的),在main函数中,对象的作用域为他所在的最近的一对花括号内。在后花括号处析构函数被调用;全局的对象的作用域为声明之后的整个文件,析构函数在最后被调用。另外,临时产生的对象在使用完后立即会被析构。

赞(15)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程