ES6学习(一)
let和var的区别
- let只在代码块中有效,var在全局范围内有效
- let只能生明一次,而var可以声明多次
- for循环很适合用let
for(var i=0;i<10;i++){
setTimeout(function(){
console.log(i); //输出10个10
})
}
up(){
for(let j=0;j<10;j++){
setTimeout(function(){
console.log(j); //输出0123456789
})
}
}
新增原始数据类型Symbol
之前原始数据类型有6种,分别是number、string、Boolean、null、Object和undefined。ES6引入了一种新的数据类型Symbol,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。
let sy=Symbol("hh");
console.log(sy);
console.log(typeof(sy));
let sy1=Symbol("hh");
console.log(sy===sy1); //false
console.log(sy==sy1); //false
因此,每一个Symbol都是不相同的,即使定义的值相同。
字符串遍历器
一般写遍历:
var str="foo";
for(var i=0;i<str.length;i++){
console.log(str[i]);
}
迭代器遍历字符串:
for(let codePoint of 'foo'){
console.log(codePoint);
}
模板字符串
传统的JavaScript写多行字符串:
$('#result').append(
'There are <b>' + basket.count + '</b> ' +
'items in your basket, ' +
'<em>' + basket.onSale +
'</em> are on sale!'
);
ES6:使用反引号(``)标识
$('#result').append(`
There are <b>${basket.count}</b> items
in your basket, <em>${basket.onSale}</em>
are on sale!
`);
// 字符串中嵌入变量
let name = "Bob", time = "today";
console.log(`Hello ${name}, how are you ${time}?`); //输出:Hello Bob, how are you today?
==注意:==如果字符传中的变量没有声明就会报错,如果大括号内部是字符串,将按原样输出。
let s=`Hello ${place}`;
console.log(s); //"ReferenceError: place is not defined"
let s=`Hello ${'place'}`; //输出:Hello place
console.log(s);