广州web培训
达内广州五羊中心

18087159764

热门课程

达内广州web培训详解JS作用域

  • 时间:2016-11-23
  • 发布:广州前端开发培训
  • 来源:简书

作用域属性是在定义函数的时候决定的,不是在调用函数的时候决定。

//JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里

eg.

var name="lw";

function alert_1(){

alert(name);

}

function alert_2(){

var name="zgm";

alert_1();

}

alert_2();//结果:lw

js的预编译:

1.在一段js代码执行之前,会预先处理var关键字和function定义式(函数表达式和函数定义式),对于局部变量,变量的值会在真正执行的时候计算。

2.函数定义注意:函数定义式和函数表达式的不同,对于函数定义式,会将函数定义提前.而函数表达式,会在执行过程中才计算。

eg.

alert(typeof hello);//结果:function

alert(typeof world);//结果:undefined

function hello(){//函数定义式

alert("hello");

}

var world=function(){//函数表达式

alert("world");

}

alert(typeof world);//结果:function

js预编译是以段为处理单元

eg.

<script>

alert(typeof hello); //结果:undefined

</script>

<script>

function hello() {

alert('hello world');

}

</script>

作用域链代码优化在标识符解析的时候,查找全局变量是最慢的,所以尽量使用局部变量。

eg.

function changeColor(){  

var doc=document;  

doc.getElementById("NM").onclick=function(){                       doc.getElementById("AL").style.backgroundColor="red";  

};

}

全局变量document的被调用两次,查找该变量必须遍历整个作用域链,耗费时间,达内广州web培训建议你可以把它存储到局部变量里再使用。

上一篇:JS依赖注入详解:反射(reflection)方法
下一篇:JavaScript中容易忽视的高效操作——位操作

达内广州web培训详解ES6循环:for-of

达内广州web培训详解ES5循环:forEach

达内广州web培训详解ES5简单for循环

达内广州web培训分享:CSS预处理器的缺点

选择城市和中心
贵州省

广西省

海南省