2019-8-12 seo达人
JS的作用域一共有三个范围,分别是:
全局作用域
定义在所有函数之外的变量,其作用范围是在整个脚本中
局部作用域(函数作用域)
使用var定义在函数内部的变量,其作用范围是整个函数结构,超出函数 {} 花括号的范围则不能使用。
块级作用域
ES6声明变量的方式:let / const
let 变量名 = 变量值;
const 变量名 = 变量值;
PS:注意: 使用const修饰的变量,赋值确定后,不允许再重新赋值。(一般修饰常量或者数组对象之类的)
而且必须给予初始值。
const修饰数组对象后虽然不可以再对变量进行等号赋值了,但是还是可以用数组和对象的方法去改变它的内部结构。
IIFE(立即调用函数表达式 - - 自执行匿名函数):
英文全名:(Immediately Invoked Function Expression)
语法:
//这三种都属于IIFE写法
(function () {})();
(function () {}());
+function () {}();
//作用与ES6当中的let是一样的,只不过用这个语法是为了解决个别浏览器的兼容问题。
1
2
3
4
5
声名提升:
将使用var定义的变量声名提升到对应作用域的最顶部,赋值部分位置不变。
使用ES6的let与const没有声名提升。
函数的定义也存在声名提升:
如果是声名的方式定义的函数,将整个函数(声名及函数主体)都提升到作用域的最顶部。
如果是表达式的方式定义的函数,只提升声名,不提升赋值(函数主体部分)
示例:
//在声名函数前面输出它。输出的结果就是整个声名函数的内容
console.log(testArg)
function testArg(a, b, c){
console.log(arguments)
}
1
2
3
4
5
输出结果:
//在函数表达式之前输出函数
console.log(testArg)
var testArg = function(a, b, c) {
console.log(arguments)
}
1
2
3
4
5
输出结果:
这就是声名提升的特点,只提升声名部分,不提升赋值部分。大家一定要牢牢记住哦~
————————————————
蓝蓝设计( www.lanlanwork.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的UI界面设计、BS界面设计 、 cs界面设计 、 ipad界面设计 、 包装设计 、 图标定制 、 用户体验 、交互设计、 网站建设 、平面设计服务。