JS之使用局部变量
全局变量的危害
1 | html里有一个id="parent"的div |
所以你应该避免使用全局变量,使用局部变量
局部变量
JS里的var声明只有在函数内才有块级作用域
1 | function x(){ |
立即调用函数
如上节代码所示,立即调用函数就是声明一个函数然后立刻调用
因为避免使用全局变量所以你不该声明这个「x」的函数,因为这样已经产生了一个全局变量「x」
1 | function(){ |
但是这样会报错,原因是如果你直接声明一个「匿名函数 」并调用,浏览器里会直接报错说语法错误
我们可以使用如下小技巧
直接把匿名函数加调用的整体用 「括号」括起来
1
2
3
4
5(
function(){
//相关处理
}()
)直接把匿名函数用「括号」括起来,然后再调用
1
2
3(function(){
//相关处理
})()加减号或者取反(「+」「-」「!」「~」)
这些运算符是告诉浏览器我不是再声明一个函数而是在求值,但是这个值我不关心(爱是多少是多少)
1 | +function(){}() |
- 因为这个局部变量问题的使用太过麻烦,ES6终于狠心给JS升级了
1 | { |
{ } 左大括号右大括号之内的内容代表块级作用域,但是你不能用var
1 | { |
因为var会变量提升,所以实际的代码是这个效果
1 | var parent; //变量提升 |
所以在ES6出来之前也就是2015年以前如果你想用局部变量就要这样
1 | ~function(){}() |