- console.log(1+ "2"+"2"); //对于加法来说,如果只有一个操作数是字符串,则将另一个操作数也转换为字符串,然后将两者拼接,为122
- console.log(1+ +"2"+"2"); //(+"2")应用了一元加操作符,一元加操作符相当于Number()函数,会将 (+"2")转换为2,1+2+"2"=32
- console.log("A"- "B"+"2"); //在减法中遇到字符串和加法相反,调用Number()函数将字符串转换为数字,不能转换则返回NaN,此时运用加法规则,NaN+"2","2"是字符串,则将两者拼接。
- console.log("A"- "B"+2); //这个与上面的不太相同,减法运算后依然为NaN,但是加号后面的为数字2,加法规则中,如果有一个操作数是NaN,则结果为NaN
for(let i=0;i<12;i++){} console.log(i); //i is not defined
let 与var不同,存在块级作用域,在for循环中声明,循环之外销毁 所以 i not defined
const a=12;a=13;console.log(a) //TypeError
const 声明一个常量无法更改,所以TypeError
const g={b:12}; console.log(g.b); //12 g.b=13; console.log(g.b); //13
g是一个对象 且他的属性b 的值为13,但是!!如果const出来的是一个对象他的属性是可以更改的.
let [head,...tail]=[1,2,3,4]; console.log(tail); //[2, 3, 4]
数组的解构赋值
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)
以前,为变量赋值,只能直接指定值。
var a = 1; var b = 2; var c = 3;
ES6允许写成下面这样
let [foo, [[bar], baz]] = [1, [[2], 3]]; //foo 1 //bar 2 // baz 3 let [x, , y] = [1, 2, 3]; // x 1 //y 3 let [x, y, ...z] = ['a']; //x "a" //y undefined //z [] let [head, ...tail] = [1, 2, 3, 4]; //head 1 //tail [2, 3, 4]
上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。
本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。
基本用法 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 以前,为变量赋值,只能直接指定值。 var a = 1 ; var b = 2 ; var c = 3 ; ES6允许写成下面这样。 var [a, b, c] = [ 1 , 2 , 3 ]; let [foo, [[bar], baz]] = [ 1 , [[ 2 ], 3 ]]; foo // 1 bar // 2 baz // 3 let [x, , y] = [ 1 , 2 , 3 ]; x // 1 y // 3 let [x, y, ...z] = [ 'a' ]; x // "a" y // undefined z // [] let [head, ...tail] = [ 1 , 2 , 3 , 4 ]; head // 1 tail // [2, 3, 4] let [ , , third] = [ "foo" , "bar" , "baz" ]; third // "baz" |
1
2
3
4
5
6
7
|
上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。 本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。 |