关于加减和es6

  1. console.log(1+ "2"+"2");   //对于加法来说,如果只有一个操作数是字符串,则将另一个操作数也转换为字符串,然后将两者拼接,为122
  2. console.log(1+ +"2"+"2");   //(+"2")应用了一元加操作符,一元加操作符相当于Number()函数,会将 (+"2")转换为2,1+2+"2"=32
  3. console.log("A"- "B"+"2");   //在减法中遇到字符串和加法相反,调用Number()函数将字符串转换为数字,不能转换则返回NaN,此时运用加法规则,NaN+"2","2"是字符串,则将两者拼接。
  4. 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] = [123];
 
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1 bar // 2 baz // 3
 
let [x, , y] = [123];
// 1 y // 3
 
let [x, y, ...z] = ['a'];
// "a" y // undefined z // []
 
let [head, ...tail] = [1234];
head // 1 tail // [2, 3, 4]
     
         
 
 
     
 
 let [ , , third] = ["foo""bar""baz"];
third // "baz"    
1
2
3
4
5
6
7
上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。
 
 
 
本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。
posted @ 2018-04-20 10:31  sunmarvell  阅读(696)  评论(0编辑  收藏  举报