目录:
打开node,输入node,进入学习吧。
var a="我爱代码" //a可以看作是window的属性 console.log(window.a)
//node上我们就别window了,要报错的。全局是global
在浏览器中,顶层作用域就是全局作用域。var命令和function命令依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从ES6开始,全局变量将逐步与顶层对象的属性脱钩。
let,只在它所在的代码块中有效; var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a [6](); // 6
let不存在变量提升:一句话解释,没声明别用,报错报错,那可不是未初始化
console.log(foo); // 输出undefined console.log(bar); // 报错ReferenceError var foo = 2; let bar = 2;
var tmp = 123; if (true) { tmp = ‘abc‘; // ReferenceError let tmp; }
let x = do { let t = f(); t * t + 1; };
const和let差不多,const声明一个只读的常量。一旦声明,常量的值就不能改变
const PI = 3.1415; PI // 3.1415 PI = 3; // TypeError: Assignment to constant variable.
函数调用中使用展开运算符
function test(a, b, c) { }
var args = [0, 1, 2];
test.apply(null, args);
//现在用es6的...
function test(a,b,c) { }
var args = [0,1,2];
test(...args);
合并两个对象
let a={x:1,y:2}; let b={z:3}; let ab={...a,...b}; console.log(ab) //{x:1,y:2,z:3}
let z={a:3,b:4}; let n={x:1,y:2,...z}; console.log(n); //{x:1,y:2,a:3,b:4}
Symbol:第7中数据类型,表示独一无二的值。前六种是:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。
var s1 = Symbol(‘foo‘);//后面传个字符串好识别s1,s2 var s2 = Symbol(‘bar‘); s1 // Symbol(foo) s2 // Symbol(bar) typeof s1 //Symbol s1.toString() // "Symbol(foo)" s2.toString() // "Symbol(bar)"
for…of循环:和for in 感觉没啥区别,可以遍历对象和数组;
let words=[2,2,2,2] var uniqueWords = new Set(words); for (var word of uniqueWords) { console.log(word);//2 }
for (var word in uniqueWords) {
console.log(word);//别开玩笑了,还是有点区别的,for in 咋遍历Set呢
}
Set:它类似于数组,但是成员的值都是唯一的,没有重复的值。
add(value)
:添加某个值,返回Set结构本身。delete(value)
:删除某个值,返回一个布尔值,表示删除是否成功。has(value)
:返回一个布尔值,表示该值是否为Set
的成员。clear()
:清除所有成员,没有返回值。keys()
:返回键名的遍历器values()
:返回键值的遍历器entries()
:返回键值对的遍历器forEach()
:使用回调函数遍历每个成员var s=new Set([1,2,3,4,4]); console.log(s);//1234
还可以去重:
var a=[1,3,4,5,6,3]; var b=[...new Set(a)]; //去重
/*占位符*/
原文:http://www.cnblogs.com/leggod/p/6490683.html