首页 > 技术文章 > javascript知识点杂记

Alcesttt 2017-07-29 23:41 原文

1 for(var i = 0; i < 10; i++) {
2     setTimeout(function() {
3     console.log(i);  //输出10个10,因为setTimeout方法是异步的,当执行到setTimeout时,for循环已经执行完毕,i变量值为10
4     }, 1000);
5 }

 

1 for (var i = 0; i < 10; i++) {
2     (function(a) {
3     // 变量 i 的值在传递到这个作用域时被复制给了 a,
4     // 因此这个值就不会随外部变量而变化了
5     setTimeout(function() {
6         console.log(a);  //输出0 1 2 3 4 5 6 7 8 9
7         }, 1000);
8     })(i); // 我们在这里传入参数来"闭包"变量
9 }

 

 1 //声明式函数定义语句属于顶级作用域范围,函数调用语句可写在函数声明语句之前:
 2 add(1, 2);//3
 3 function add(m, n) {
 4     alert(m + n);
 5 }
 6 
 7 
 8 //函数表达式定义的函数在定义之前无法调用:
 9 //TypeError: add is not a function
10 add(1, 2);
11 var add = function(m, n) {
12     alert(m + n);
13 };

 

推荐阅读