1、概念 詞法作用域:定義在詞法階段的作用域,即書寫代碼時函數聲明的位置決定的。詞法分析器處理代碼時會保持作用域不變(大部分是這樣的),會知道全部標識符在哪裡以及如何聲明的,從而預測在執行過程中如何對他們進行查找。 2、作用域查找 作用域會在找到第一個標識符時停止,存在“遮蔽效應”。 3、欺騙詞法 ...
1、概念
詞法作用域:定義在詞法階段的作用域,即書寫代碼時函數聲明的位置決定的。詞法分析器處理代碼時會保持作用域不變(大部分是這樣的),會知道全部標識符在哪裡以及如何聲明的,從而預測在執行過程中如何對他們進行查找。
示例代碼:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<title>詞法作用域</title>
</head>
<body>
<script type="text/javascript">
function foo() {
console.log(a);
}
function bar() {
var a = 3;
foo();
}
var a = 2;
bar();//輸出2
</script>
</body>
</html>
2、作用域查找
作用域會在找到第一個標識符時停止,存在“遮蔽效應”。
3、欺騙詞法
(1)eval
(2)with
欺騙詞法不是好主意,會導致性能下降,不要使用他們。