作用域

作用域

  • 变量作用域:一个变量的作用域就是代码中定义变量的区域。
    • 全局变量:在全局中定义的变量拥有全局作用域
    • 局部变量:在函数内部定义的变量为局部变量,具有局部作用域
局部变量的优先级高于全局变量,当全局变量与局部变量重名时,全局变量会被局部变量覆盖
var color='red'//声明一个全局变量

	function fun(){
		var color='yellow'//声明一个局部变量

		console.log(color)
	}

	fun()//yellow
  • 函数作用域:ES6之前由于JS中没有块级作用域,而是取代的使用了函数作用域。
    • 在函数中声明的变量都贝贝提升至函数体的顶部,即为“声明提前”(发生在JS预编译阶段)
    • 所有在函数中声明的变量在函数体中始终是可见的,这意味着变量在声明之前就可以使用它
function test(){
		console.log(i)//undefined 表示定义但未赋值
		for (var i = 0; i < 10; i++) {
			console.log(i)//0 1 2 3 4 5 6 7 8 9 
		}
		console.log(i)//10
	}
	test()
虽然看似变量i是在for循环时才被定义,实际上由于变量提前变量i在函数顶部就已经被定义,所以在整个函数体中都以访问i
  • 块级作用域:每一个花括号中的代码都有其对应的作用域,变量在声明它们的代码段之外不可见
posted @ 2020-02-21 17:08  我就是要学习  阅读(117)  评论(0编辑  收藏  举报