$ npm install --save-dev babel-preset-es2015
$ npm install --save-dev babel-preset-stage-0
$ npm install --save-dev babel-preset-stage-1
$ npm install --save-dev babel-preset-stage-2
$ npm install --save-dev babel-preset-stage-3
$ npm install --global babel-cli
$ npm install --save-dev babel-cli
$ cnpm i -D babel-cli
// .babelrc
{
"presets": [
"es2015",
"stage-2"
],
"plugins": [
]
}
- let
for(var i=0;i<3;i++){
console.log(i);
}
console.log(i);
for(let i=0;i<3;i++){
console.log(i);
}
console.log(i); //undefine
var a=[];
for(var i=0;i<3;i++){
a[i]=i;
}
console.log(a[2]); //2
var a=[];
for(var i=0;i<3;i++){
a[i]=function(){
console.log(i)
}
}
a[2] //(console.log(i)) i指向全局
a[2]() //3
var a = [];
for (var i = 0; i < 10; i++) {
(function(j){
a[j] = function () {
console.log(j);
};
})(i);
}
a[6]() //6
for(var i=0;i<3;i++){
var i="haha";
console.log(i);
}
// haha*1
for(let i=0;i<3;i++){
let i="haha";
console.log(i);
}
// haha*3
var tmp ='haha';
function f() {
console.log(tmp);
}
f(); // haha
var tmp ='haha';
function f() {
var tmp = 'hello world';
console.log(tmp);
}
f(); //hello world
var tmp ='haha';
function f() {
console.log(tmp);
var tmp = 'hello world';
}
f(); //undefine
var tmp ='haha';
function f() {
console.log(tmp);
if (false) {
var tmp = 'hello world';
}
}
f(); // undefined 变量提升 覆盖外层变量
- const
- global
- 不可重新赋值
- 解构赋值
模式
变量
let x; {x} = {x:1} //报错{x}当成代码块let x; ({x} = {x:1}) x //1let { __proto__: x } = 123; - undefined 触发默认值
(function(){
console.log("a");
})()
(function(){
console.log("a");
})()
function(){
console.log("a");
}() //报错 函数定义不能直接跟() 会被当成字符串执行
(function(){
console.log("a");
}());
+function(){
console.log("a");
}() //返回值 NaN
!function(){
console.log("a");
}() // true
void function(){
console.log("a");
}() // undefined
var a = function(){
console.log("a");
}()
this 调用时 定义时