当前位置: 首页 > 后端技术 > Node.js

JS变量作用域

时间:2023-04-03 11:23:04 Node.js

1。全局作用域&&var:没有定义在任何函数体中的var变量具有全局作用域(不同函数中的同名变量相互独立,互不影响:);&&letandconst:notinany块级(即{})语句中定义的let变量或const常量具有全局作用域(不同块级(即{})语句中的同名变量是相互独立,互不影响:)。//1.如果在函数体内声明了var变量,则该变量的作用域为整个函数体,在函数体外不能引用该变量:functiongarden(){varx=1;x=x+1;}x=x+2;//引用错误!函数体外部不能引用变量x//2.如果在块级(即{})语句内部声明了let变量或const常量,则该变量的作用域为整个块级(即内{})statement,//该变量不能在块级外(即{}内)引用statement:if(true){varupperA='LetterA';}upperA+'B';//ReferenceError:upperAisnotdefined//3.由于JavaScript函数可以嵌套,此时内层函数可以访问外层函数定义的变量,反之亦然:functiongarden(){letx=1;函数showtime(){让y=x+1;//showtime可以访问garden的变量x!}让z=y+1;//引用错误!garden无法访问showtime的变量y!}提醒:JavaScript函数从自己的函数中查找变量从定义开始,从“内”向“外”看。如果内层函数定义了一个与外层函数重名的变量,那么内层函数的变量就会“屏蔽”外层函数的变量。2.局部作用域在任何块级(即{})语句中定义的变量或常量都具有全局作用域。