最近需要用到Nodejs,就学习一下吧,js小白,如有不对请指正不胜感激。
只记录自己需要用到的地方,可能记录的有些跳跃。
- var定义变量
var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];
- 变量声明提升(代码 A 和 代码 B)
无论在代码的任何位置声明变量,执行引擎都会在任何代码执行之前处理。由于这个原因,所以在代码中的任意位置声明变量与在代码开头声明变量是等效的。也就是下面的两段代码是等价的。 - 声明与未声名变量的区别(代码 C)
- 未声明的变量会被添加一个全局作用域,而声明变量作用域是当前上下文:
- 声明变量在任何代码执行前创建,而未声明的变量只C有在执行赋值操作的时候才会被创建(代码D 和 代码 E)
- 声明变量是不可配置属性,而未声明变量是可配置的(代码F)
- 声明与未声名变量的区别(代码 G)
- 变量声明提升(代码 A 和 代码 B)
//代码A:
var name;D
name = "nodejs";
//代码B:
name = "nodejs";
var name;
//代码C:
function x()
{
y = 1; // 在严格模式下会抛出ReferenceError
var z = 2;
}
x();
console.log(y); // '1'
console.log(z); // ReferenceError: z is not defined
//代码D:
console.log(a); // 抛出ReferenceError。
console.log('still going...'); // 不会执行
//代码E
var a;
console.log(a); // "undefined"或""(不同执行引擎的实现不同)
console.log('still going...'); // 'still going...'
//代码F
var x = 0;
function f(){
var x = 1, y = 1;
}
f();
console.log(x); // 0
console.log(y); // ReferenceError: y is not defined
//代码 other1
{
var x = 1, y = 1;
}
console.log(x); // 1
console.log(y); // 1
//代码 other2
{
var x = 1;
var x = 1;
}
console.log(x); // 1
- let定义块级变量 没有变量声明提升和暂时性死区(吐槽一下Js语法也挺烦人)
- let 声明变量 代码A 可用和代码B 不可用
- let 只在在代码块内可用,声明前不可用
- let 同一个块内不能重复定义,即重名,形如代码other2
- const定义常量 定义后不能修改 应该和let 一样是块级变量。