VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > JavaScript教程 >
  • JavaScript 笔记 1

JavaScript 笔记 1

参考书籍:JavaScript权威指南、JavaScript高级程序设计

变量和赋值#

变量可以保存任何类型的数据。

var在所有版本中均可使用,const 和let只能在ES6及之后的版本可用

var声明#

  • 可以反复多次声明同一个变量

  • 定义变量并赋予初值之后,可以改变保存的值,也可也改变值的类型

var tcher = "理松";
tcher = 438;
var tcher = "理松38";
var tcher = 9060;

声明的作用域#

被包含在函数内部时用var声明会成为其局部变量,在函数退出时将被;

去掉var则会成为全局变量,但极其不推荐这样写,在严格模式下可能导致抛出ReferenceError

要定义多个变量时。可在一条语句中用逗号分割每个变量,可选初始化,逗号之间可以插入换行和空格缩进以便于阅读和理解:

var tcher = "理松",
    age = 45,
    welcome = false;

声明提升(hoist)#

使用var声明的所有变量,变量的定义会自动提升到函数作用域顶部

以下代码不会报错:

function foo() {
    console.log(age);
    var age = 45;
}
foo();

运行时被等价为:

function foo() {
    var age;
    console.log(age);
    age = 45;
}
foo();

let声明#

var的作用差不多,但有所区别

声明的作用域#

作用域为块作用域,是函数作用域的子集

不允许同一个块作用域中出现冗余声明,但嵌套使用相同标识符不会报错

没有声明提升#

let声明之前的执行瞬间被成为“暂时性死区”(temporal dead zone),在此阶段引用任何后面才声明的变量都会抛出ReferenceError

不能进行条件声明#

条件声明是一种反模式,它让程序更难理解。如果发现自己在使用这个模式,一定有更好的替代方式

if(typeof name === "undefined") {
    let name;
}
name = "理松";

for循环中的声明#

在使用let声明迭代变量时,JavaScript引擎会在后台为每个迭代循环声明一个新的迭代变量,这种行为适用于所有风格的for循环,包括for-infor-of

for(var i = 0; i < 5; ++i) {
}
console.log(i);	//5

for(let i = 0; i < 5; ++i) {
}
console.log(i);	//ReferenceError

for(var i = 0; i < 5; ++i) {
	setTimeout( () => console.log(i), 0)
}
//你以为的输出:0 1 2 3 4
//实际上的输出:5 5 5 5 5

for(let i = 0; i < 5; ++i) {
	setTimeout( () => console.log(i), 0)
}
//实际上的输出:0 1 2 3 4

每个setTimeout引用的都是不同的变量实例,所以会输出循环执行过程中每个迭代变量的值

const声明#

用于声明常量,行为与let基本相同,但声明时必须初始化。

  • 声明后不可改变

  • 不允许重复声明

  • 块作用域

  • 不能用于声明迭代变量

  • 可以用来声明一个不会被修改的for循环变量

来源:https://www.cnblogs.com/gravityCat/p/15012488.html

相关教程