Sunset
302 字
2 分钟
作用域和变量的访问原则
和c语言一样,JavaScript也有用函数的作用域。
请看以下代码:
for ( let i = 0; i < 3; i++ ){ doucment.write('数字是:')}console.log(i)输出结果会是什么呢?
其实会报错!i is not defined!
因为i的声明在for循环的循环头部,一旦出循环就会失效,因此是不能在循环外部打印i的。
作用域
通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
全局作用域:全局有效,即整个<script> 内都可以正常使用。
局部作用域:只在某一部分有效
特殊:如果函数内部没有声明直接赋值,会被当作全局变量处理
↑不建议这样写。
此外,函数中的形参也可以被看作是局部变量
不同作用域的变量,名字可以重复。也不冲突->使用就近原则,使用最接近的局部作用域。
function f1() { let num = 123 function f2() { let num = 0 console.log(num) } f2()}let num = 456f1()控制台会输出 0