javaScript作用域(三个:全局、函数、块级)
全局作用域
- 在全局作用域定义的变量(或函数)在全局范围内都有效
定义的方式
function a(){
name="藏三"
}
a();
console.log("name:",name)
函数作用域
- 在函数里面定义的变量
- 变量只能在你的函数作用域里面使用,若出了函数作用域之外则会显示该属性没有定义
使用
function b(){
var name="李四";
let age="18"
console.log(name)
}
b();
console.log(name);
块级作用域(es6新增)
- 新增定义变量的两个命令let和const
- 这两个命令定义的变量只能在块级作用域里面使用
什么是块级作用域?
{
console.log(sex)
{
let name ="张三";
var sex="female"
}
{
let age="18"
}
console.log(sex)
}
console.log(sex)
- 以上的name属性就是块级作用域定义的属性 ,其变量只有在块级01里面有效( age属性只能在块级02里面有效)
- 而sex 用的var命令 其变量在本函数作用域里面都有效如在块级0和块级0外面打印的sex 都为female
块级作用域有什么用
let arr=[];
for (var i=0;i<10;i++){
arr[arr.length]=function () {
console.log(i)
}
}
arr[2]()
for (var i=0;i<10;i++){
( function (i) {
arr[i]=function () {
console.log(i)
}
})(i)
}
arr[2]()
for (let i=0;i<10;i++){
arr[arr.length]=function () {
console.log(i)
}
}
arr[2]()
|