目录
1.1 JavaScript语句
1 语句(statement)和表达式
语句概念:是为了完成某种任务而进行的操作。语句以分号结尾,一个分号就表示一个语句结束。多个语句可以写在一行内。
表达式概念:指一个为了得到返回值的计算式。
1.2 JavaScript变量
1.2.1 JavaScript变量的基本概念
1 概念
变量是对“值”的具名引用。变量就是为“值”起名,然后引用这个名字,就等同于引用这个值。
2 JavaScript的变量是松散类型的,可以保存任何类型的数据。
3 变量的定义(声明):
1)一般使用var关键字进行定义。使用var定义的变量是定义该变量的作用域中的局部变量
//"use strict";
var a; //未经过初始化的变量会保存一个特殊的值undefined
var b = 10; //定义变量b并且初始化,值为10
var c = 10,
d = "abd",
f = null; //可以使用一条语句定义多个变量,中间用逗号隔开,缩进可有可无
注意:如果使用var重新声明一个已经存在的变量,是无效的,但如果第二次声明的时候还赋值,则会覆盖掉前面的值。
2)省略var关键字定义(这里说赋值比较合适),则为全局变量。(不推荐使用)
如果该变量定义在全局作用域中,则定义之后可以直接调用。
z = 10;
console.log(z); //返回10
如果变量定义在函数里面,则必须调用一次该函数,这样该变量才有定义,就可以在函数外面的任何地方访问这个变量。
function myF(){
g = 10; //省略var定义,严格模式报错,其他则为全局变量
}
console.log(g); //报错,因为没有调用函数myF(),变量g还没有定义
function myF(){
g = 10; //省略var定义,严格模式报错,其他则为全局变量
}
myF();
console.log(g); //10
3)如果变量没有使用var定义,也没有赋值,直接调用变量,则会报错。
console.log(h); //报错
4 注意:给未经声明的变量赋值在严格模式下会抛出错误。严格模式是在代码开头加上("use strict");
1.2.2 JavaScript变量的提升
1 变量提升
JavaScript引擎工作方式先解析代码,获取所有被声明的变量,然后再一行一行地运行。造成的后果是所有声明的变量的语句,都会被提升到代码的头部,这叫做变量的提升。
"use strict";
/*
虽然变量x的声明语句在这个语句之后,但是因为变量提升原因,执行的时候,变量提升的语句已经提升到代码的首部。
*/
console.log(x);//输出undefined。注意变量提升,只提升声明,赋值是不会提升
var x = "use";
1.3 标识符
1 概念
变量、属性或者函数的名字
2 标识符命名规则
由任意的字母(包含扩展的Unicode或ASCII字母字符)、数字、下划线(_)或美元符号组成,其中第一个不能是数字。
3 注意
保留字和关键字不能作为标识符
1.4 注释
1 单行注释
2 多行注释
"use strict";
/*
这里是多行注释
多
*/
console.log(x); //这里表示单行注释
var x = "use";
1.5 语句块
1 概念
JavaScript 使用大括号,将多个相关的语句组合在一起,称为语句块。
2 注意
JavaScript没有块级作用域
"use strict";
var a = [1, 2, 3];
for (var i = 0; i < 3; i++){
console.log(a[i]);
}
console.log(i); //输出3。JS没有块级作用域,所以在语句块外面也能调用语句块中声明的变量
1.6 条件语句
1.6.1 if语句
"use strict";
if (条件表达式) {
//语句块。表达式为真时执行
}
1.6.2 if…else语句
"use strict";
if (条件表达式) {
//语句块。表达式为真时执行
} else {
//条件表达式为假时执行
}
1 注意
对同一个变量进行多次判断时,多个if...else语句可以连写在一起。else代码块总是与离自己最近的那个if语句配对。
1.6.3 switch语句
"use strict";
switch (表达式){
case 值或表达式1:
语句1; //表达式为“值或表达式1”时执行
break; //每个case语句之后,最好加一个break语句,表示跳出switch语句块,否则会一直执行到default语句
case 值或表达式2:
语句2;
break;
...;
default: //如果表达式的值和case之后的值都不相等,则会执行该语句块
语句;
}
1.7 三元运算符(if…else简单形式)
(条件表达式) ? 表达式1 : 表达式2 ; //条件表达式为真时,返回表达式1的值,否则返回表达式2的值
1.8 循环语句
1.8.1 while循环
while (表达式) {
//表达式为真时执行
}
1.8.2 for循环
for (初始化表达式; 条件表达式; 递增表达式){
//初始化表达式(initialize):确定循环变量的初始值,只在循环开始时执行一次。
//条件表达式(test):每轮循环开始时,都要执行这个条件表达式,只有值为真,才继续进行循环。
//循环后表达式(increment):每轮循环的最后一个操作,通常用来递增循环变量。
}
1.8.2 do…while循环
"use strict";
do {
//必须执行一次,然后判断条件表达式,为真时循环
}while(条件表达式);
1.9 break语句和continue语句
1 break语句
作用:跳出代码块或循环。
2 continue语句
作用:立即终止本轮循环,返回循环结构的头部,开始下一轮循环。
3 注意
如果存在多重循环,不带参数的break语句和continue语句都只针对最内层循环。
1.10 标签(label)
1 概念
JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置。标签可以是任意的标识符。
2 标签通常与break语句和continue语句配合使用,跳出特定的循环。
标签也可以用于跳出代码块。
"use strict";
top:
for (var i= 0; i <3; i++){
for (var j = 0; j < 3; j++){
if (i === 1 && j ===1){
break top;
}
console.log(i + "," + j);
}
}
/*
上面代码为一个双重循环区块,break命令后面加上了top标签(注意,top不用加引号),满足条件时,直接跳出双层循环。如果break语句后面不使用标签,则只能跳出内层循环,进入下一次的外层循环。
输出为
0,0
0,1
0,2
1,0
*/
如有错,请指出,如有侵权,请联系我,谢谢!
参考资料
1 JavaScript 教程https://wangdoc.com/javascript/basic/grammar.html
2 《JavaScript高级程序设计 第3版》