YuJian920
3 years ago
3 changed files with 114 additions and 1 deletions
@ -0,0 +1,57 @@ |
|||||||
|
## import 声明 |
||||||
|
|
||||||
|
import 声明有两种用法,一个是直接 import 一个模块,另一个是带 from 的 import,它能引入模块里的一些信息。 |
||||||
|
|
||||||
|
```javascript |
||||||
|
import "mod"; //引入一个模块 |
||||||
|
import v from "mod"; //把模块默认的导出值放入变量v |
||||||
|
``` |
||||||
|
|
||||||
|
直接 import 一个模块,只是保证了这个模块代码被执行,引用它的模块是无法获得它的任何信息的,而带 from 的 import 意思是引入模块中的一部分信息,可以把它们变成本地的变量。 |
||||||
|
|
||||||
|
独立的 `export` 导入相当于是一个引用,导出的变量仍然指向同一个地址(无关引用类型和值类型)。 |
||||||
|
|
||||||
|
而 `export default` 导出的则是一个值,但是对于引用类型而言,也是会被修改的 |
||||||
|
|
||||||
|
## var 声明的预处理 |
||||||
|
|
||||||
|
>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(){ } |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
## class 声明 |
||||||
|
|
||||||
|
class 声明也是存在预处理的,但是它的行为会更加的符合直觉,更倾向于抛出错误 |
||||||
|
|
||||||
|
## 指令序言机制 |
||||||
|
|
||||||
|
"use strict"是 JavaScript 标准中规定的唯一一种指令序言,但是设计指令序言的目的是,留给 JavaScript 的引擎和实现者一些统一的表达方式,在静态扫描时指定 JavaScript 代码的一些特性。 |
||||||
|
|
||||||
|
JavaScript 的指令序言是只有一个字符串直接量的表达式语句,它只能出现在脚本、模块和函数体的最前面。 |
@ -0,0 +1,14 @@ |
|||||||
|
- `12.toString()` 会报错,这是因为 JavaScript 允许10进制 Number 省略小数点前或者后,`12.toString()` 中的 `12.` 会被当作省略了小数点后的数字,如果想要这一句正常工作,需要在中间加个空格:`12 .toString()` 或是 `12..toString()` |
||||||
|
- 模板支持添加处理函数的写法,这时模板的各段会被拆开,传递给函数当参数: |
||||||
|
|
||||||
|
```javascript |
||||||
|
function f(){ |
||||||
|
console.log(arguments); |
||||||
|
} |
||||||
|
|
||||||
|
var a = "world" |
||||||
|
f`Hello ${a}!`; // [["Hello", "!"], world] |
||||||
|
``` |
||||||
|
|
||||||
|
- JavaScript switch 语句继承自 Java,Java 中的 switch 语句继承自 C 和 C++,原本 switch 语句是跳转的变形,所以我们如果要用它来实现分支,必须要加上 break。 |
||||||
|
- 在 C 时代,switch 生成的汇编代码性能是略优于 if else 的,但是对 JavaScript 来说,则无本质区别。 |
Loading…
Reference in new issue