你不知道的javascript之函数作用域和块作用域(一)
2016-12-06 16:36
453 查看
立即执行函数表达式(IIFE)
1.使用匿名函数表达式
var a = 2; (function IIFE(){ var a = 3; console.log(a);//3 })(); console.log(a);//2
2.当作函数调用并传递参数进去
var a = 2; (function IIFE(global){ var a = 3; console.log(a);//3 console.log(global.a);//2 })(window); console.log(a);//2
3.解决undefined标识符默认值被错误覆盖
undefined = true; (function IITF(){ var a ; if(a === undefined){ console.log('Undefined is safe here!'); } })();
4.倒置代码的运行顺序
var a = 2; (function IFEE(def){ def(window); })(function def(global){ var a = 3; console.log(a);//3 console.log(global.a);//2 });
块作用域
for语句,i会被绑定在外部作用域(函数或全局)
for(var i = 0 ; i < 10 ; i++){ console.log(i); }
if语句,当使用var声明变量时,在哪里都一样
var foo = true; if(foo){ var bar = foo*2; bar = something(bar); console.log(bar); }
以下是一个闭包结合自执行函数的实例
var i = 1; var IFun = (function(){ var i = 1; console.log(i); return function(){ i++; console.log(i); } })(); IFun(); IFun(); 最终输出的结果为1,2,3,很多会下意识的觉得结果会有4个值,但是运用了return 返回值以及自执行函数将函数返回给IFun变量,使得在第一次操作过程后,将返回函数直接赋给IFun。
相关文章推荐
- 你不知道的Javascript(上卷)读书笔记之三 ---- 函数作用域与块作用域
- JavaScript笔记:函数作用域和块作用域
- javascript中不存在块级作用域,所以要小心使用在块级作用域中的函数声明所带来的作用域混乱.
- JavaScript作用域特例(只有函数作用域无块级作用域)
- javascript基础(函数与方法的区别,变量作用域,变量和函数的声明提前,函数作用域)(十五)
- javascript之词法作用域及函数的运行过程
- JavaScript 内部函数作用域问题及解决方法
- javascript中的回调函数中变量作用域
- JavaScript中Eval()函数的作用
- IE和FireFox JavaScript的函数名的作用域的异同
- javascript 函数及作用域(转)
- 关于 javascript 闭包及函数原型 作用链域 总结
- IE和FireFox中JavaScript的函数名的作用域的异同
- JavaScript的函数,声明变量和作用域等7个基础知识点总结
- javascript中的回调函数中变量作用域
- Javascript 函数及作用域
- Javascript中函数作用域
- 基础决定高度:JavaScript中的作用域,JS作用域
- javascript之函数作用域和闭包[function scope and closure]
- javascript之函数作用域和闭包[function scope and closure]