Javascript作用域

Posted 江州益彤

tags:

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

一、全局作用域

var a=10;//全局作用域
function print(){
	var b=12;//局部作用域(函数作用域)
	console.log(a);//10
}
console.log(b);//b is not defined

二、局部作用域(函数作用域)

同上

三、块作用域
所有{ }内都是一个独立的作用域,例如if,for,但对象的{ }不包括。
特点:使用let或const定义的变量

if(true){
	var a=10;//使用var声明的变量,在全局作用域
	console.log(a);//10
}
console.log(a);//10
const b=12;

if(true){
	let a=10;//使用var声明的变量,在全局作用域
	console.log(a);//10
}
console.log(a);//a is not defined

console.log(b);//12

js作用域的特殊情况

function print(a){
	console.log(a);
}
print(10);
console.log(a);//a is not defined

for()中使用var定于的变量在全局作用域中

for(var i=0;i<3;i++){
	console.log(i);//0,1,2
}
console.log(i);//3

for()中使用var定于的变量在块作用域中

for(leti=0;i<3;i++){
	console.log(i);//0,1,2
}
console.log(i);//i is not defined

try-catch:catch(变量)该变量只能在catch中使用,外面无法访问

try{
	throw new Error();
}catch(error){
	var test='hello world';
	console.log(error);//Error
}
console.log(error);//error is not defined
console.log(test);//hello world

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

JS---闭包

JS 作用域及作用域链

JS 作用域及作用域链

JavaScript ES6 的let和const

Javascript代码片段在drupal中不起作用

初入AngularJS基础门