荆门住房建设厅网站,番禺市桥做网站公司,qq登录网页手机版,2345网址大全的网址它们都是用来声明变量的。 1. var具有变量提升机制#xff0c;let和const没有 /* var有变量提升机制 */
script
console.log(str); // 打印出undefined
var str 你好;
/script/* let没有变量提升机制 */
script
console.log(str); // …它们都是用来声明变量的。 1. var具有变量提升机制let和const没有 /* var有变量提升机制 */
script
console.log(str); // 打印出undefined
var str 你好;
/script/* let没有变量提升机制 */
script
console.log(str); // 会报错Cannot access str before initialization
let str 你好;
/script/* const没有变量提升机制 */
script
console.log(str); // 会报错Cannot access str before initialization
const str 你好;
/script 2. var可以多次声明同一个变量let和const不可以。 /* var可以多次声明同一个变量 */
script
var str 1;
var str 2;
console.log(str); // 打印输出2
/script/* let不可以多次声明同一个变量 */
script
let str 1;
let str 2;
console.log(str); // 会报错Identifier str has already been declared
/script/* const不可以多次声明同一个变量 */
script
const str 1;
const str 2;
console.log(str); // 会报错Identifier str has already been declared
/script 3. varlet是用来声明变量的const是用来声明常量的 /* var是用来声明变量的它的值可以改变 */
script
var str 1;
str 2;
console.log( str ); // 打印输出2
/script/* let是用来声明变量的它的值可以改变 */
script
let str 2;
str 你好;
console.log( str ); // 打印输出你好
/script/* const是用来声明常量的它的值不可以改变 */
script
const obj { a:1 };
obj 123;
console.log( str ); // 会报错Assignment to constant variable.
/script/* 对象里面的某个属性是可以改的 */
script
const obj { a:1 };
obj.a 123;
console.log( obj ); // 打印出{a: 123}
/script 4. var声明的变量没有自身的作用域let和const声明的变量有自身的作用域 /* var声明的变量没有自身的作用域 */
script
if( true ) {var num 123
}
console.log( num ); // 打印出123
/script
/* let声明的变量有自身的作用域 */
script
if( true ) {let num 123
}
console.log( num ); // 会报错num is not defined
/script
/* const声明的变量有自身的作用域 */
script
if( true ) {const num 123
}
console.log( num ); // 会报错num is not defined
/script 联系 script
function demo(){var n 2;if( true ){var n 1;}console.log( n ); // 此时打印出1
}
demo();
/scriptscript
function demo(){let n 2;if( true ){let n 1;}console.log( n ); // 此时打印出2
}
demo();
/scriptscript
function demo(){const n 2;if( true ){const n 1;}console.log( n ); // 此时打印出2
}
demo();
/script