function bar(x=20,y=x){
return [x,y];
}
console.log(bar())
// 上面代码的原意是,if代码块的外部使用外层的tmp变量,内部使用内层的tmp变量。但是,函数f执行后,输出结果为undefined,原因在于变量提升,导致内层的tmp变量覆盖了外层的tmp变量。
var temp=new Date()
function foo(){
console.log(temp);
if(false){
var temp="abc";
}
}
foo()
{
let a='outside'
let f=function(){
return a
}
console.log(f())
}
// do 表达式
// let x = do {
// let t = f();
// t * t + 1;
// };
const a=[];
a.push('Hello');
console.log(a.length)
//
// var constantize = (obj) => {
// Object.freeze(obj);
// Object.keys(obj).forEach( (key, i) => {
// if ( typeof obj[key] === 'object' ) {
// constantize( obj[key] );
// }
// });
// };
const b=Object.freeze({})
var constantize=(obj)=>{
Object.freeze(obj);
Object.keys(obj).forEach((key,i)=>{
if(typeof obj[key]==='object'){
constantize(obj[key])
}
})
}
<!-- let 作用域 为代码块内部 -->