IIFE
IIFE:Immediately-Invoked Function Expression.
匿名函数自调用:
(function(){
console.log('Anonymous Function')
})()
作用:
- 隐藏实现
- 不会影响外面命名空间(全局命名空间)
- 编写js模块
this
所有函数内部都有一个变量this。它的值是调用函数的当前对象。
任何函数本质上都是通过某个对象调用的。如果没有指定就是window。
如何确定this的值:
test()
此时的this值是window
p.test()
此时的this值是p。
new test()
此时的this为新创建的对象。
p.call(obj)
此时的this为obj。
以下两种情况不加分号会有问题:
- 小括号开头的前一条语句。
var a = 3;
(function () {
})()
解释:如果不加分号会将3看做是函数名调用之后的函数。
- 中方括号开头的前一条语句。
var b = 4;
[1, 3].forEach(function () {
})
解释:此处如果4后面不加分号,会将之后的[1, 3]看做是截取数组的操作,而4并不是数组,最后4[1, 3]返回的是undefined。
网友评论