变量作用域与解构赋值

Posted fuguy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量作用域与解构赋值相关的知识,希望对你有一定的参考价值。

变量作用域 

由于javascript的函数可以嵌套,此时,内部函数可以访问外部函数定义的变量,如果内部函数定义的变量和外部函数定义的变量相同,则内部函数的变量将“屏蔽”外部函数的变量

变量提升 

function foo() {
    var x = ‘Hello, ‘ + y;
    console.log(x);
    var y = ‘siry‘;
}
foo();
语句var x = ‘Hello, ‘ + y;并不报错,原因是变量y在稍后申明了,javascript引擎会自动提升y,提升变量y的申明,此时y为undefined

名字空间

全局变量会绑定到window上,不同的JavaScript文件如果使用了相同的全局变量,或者定义了相同名字的顶层函数,都会造成命名冲突,并且很难被发现。
减少冲突的一个方法是把自己的所有变量和函数全部绑定到一个全局变量中。

局部作用域

JavaScript的变量作用域实际上是函数内部,我们在for循环等语句块中是无法定义具有局部作用域,当我们为了解决块级作用域,ES6引入了新的关键字let,用let替代var可以申明一个块级作用域的变量,如果我们定义常量引入const关键字代替

解构赋值

数组解构赋值

[a,b]=[1,2];
方法返回
function f(){
   return [1,2]
}
let a,b;
[a,b]=f();//a=1,b=2

function f1(){
   return [1,2,3,4,5]
}
let a,b;
[a,b]=f();//a=1,b=2

[a,,...b]=f1();//a=1;b=[2,3,4,5]

对象解构赋值 

{a,b=1}={a:1,b:2}

数组解构赋值运用场景 

变量交互、返回数组、对返回的数组结果只关心第一个,返回多个值,选择性的接受某几个变量

以上是关于变量作用域与解构赋值的主要内容,如果未能解决你的问题,请参考以下文章

作用域与变量提升

ES6解构赋值

JavaScript学习记录day6-函数变量作用域解构赋值与方法

es6变量声明和解构赋值

JS解构赋值

001-es6变量声明解构赋值解构赋值主要用途