/*es6 是强制使用严格模式*/
/**/
function test(){
for(let i=0;i<10;i++){
console.log(i)//let生命的变量只在其声明的代码块中起作用{}
}
//console.log(i);//报引用错误而不是undefined
}
test();
//let a=1;
//let a=2;//index.js:56 Uncaught Error: Cannot find module "./class/lesson1"文件没有编译成功
//let声明的变量不能重复重复声明
/*****************************以上是let***********************************/
/*****************************以下是const*********************************/
function last(){
const pi=3.1415926//声明的时候必须赋值且不能修改
console.log(pi)
//pi=2//index.js:56 Uncaught Error: Cannot find module "./class/lesson1" 不能重新赋值
const k={//对象是引用类型 k内存中指向这个对象的指针
a:1
}
k.b=3
console.log(k)
}
last()
//解构赋值 左右一一对应进行赋值
//数组解构赋值
{
let a,b,rest;
[a,b]=[1,2]
console.log(a)//1
console.log(b)//2
}
{
let a,b,rest;
[a,b,...rest]=[1,2,3,4,5,6,7]
console.log(a,b,rest)//1 2 [3, 4, 5, 6, 7]
}
{
let a,b;
({a,b}={a:1,b:2})
console.log(a,b)
}
//使用场景
//实现变量之间的交换
{
let a=1;
let b=2;
[a,b]=[b,a]
console.log(a,b)//2,1
}
{
function f(){
return [1,2]
}
let a,b;
[a,b]=f();
console.log(a,b)
}
{
function f(){
return [1,2,3,4,5,6]
}
let a,b,c;
[a,,,b]=f();
console.log(a,b)
}
{
function f(){
return [1,2,3,4,5,6]
}
let a,b,c;
[a,,...b]=f();
console.log(a,b)
}
//对象的解构赋值
{
let o={p:42,q:true};
let {p,q}=o
console.log(p,q)
}
{
let metaData={
title:'abc',
test:[
{
title:'test',
desc:'description'
}
]
}
let {title:esTitle,test:[{title:cnTitle}]}=metaData;
console.log(esTitle,cnTitle)
}