diff --git a/深入探索 JavaScript/JavaScript 语法.md b/深入探索 JavaScript/JavaScript 语法.md index c38e3dd..17eeca1 100644 --- a/深入探索 JavaScript/JavaScript 语法.md +++ b/深入探索 JavaScript/JavaScript 语法.md @@ -15,4 +15,33 @@ import v from "mod"; //把模块默认的导出值放入变量v ## var 声明的预处理 ->var 在预处理阶段,不关心赋值的部分,只管在当前作用域声明这个变量 \ No newline at end of file +>var 在预处理阶段,不关心赋值的部分,只管在当前作用域声明这个变量 + +```javascript +var a = 1; +function foo() { + console.log(a); // undefined + + // var 会穿透一切语言结构 + if(false) { + var a = 2; + } +} + +foo(); +``` + +## function 声明 + +>function 声明表现跟 var 相似,不同之处在于,function 声明不但在作用域中加入变量,还会给它赋值。 + +看一个与之不同的例子: + +```javascript +// foo 会被提升,但不会被赋值 +console.log(foo); // undefined + +if(true) { + function foo(){ } +} +``` \ No newline at end of file