表达式和语句
表达式:
表达式(expression),指一个为了得到返回值的计算式。凡是 JavaScript 语言中预期为值的地方,都可以使用表达式。比如,赋值语句的等号右边,预期是一个值,因此可以放置各种表达式。表达式不需要分号结尾,一旦在表达式后面添加分号,则 JavaScript 引擎就将表达式视为语句,这样会产生一些没有任何意义的语句。
//表达式举例
1 + 2 //表达式的值为3
add(1,2) //表达式的值为函数的返回值
console.log //表达式的值为函数本身
console.log(3) //表达式的值为undefined
语句:
语句(statement)是为了完成某种任务而进行的操作。语句以分号结尾,一个分号就表示一个语句结束。多个语句可以写在一行内。语句和表达式的区别在于,语句主要为了进行某种操作,一般情况下不需要返回值;表达式则是为了得到返回值,一定会返回一个值。
//语句举例
var a = 1 + 3; //赋值语句
var a = 1 + 3 ; var b = 'abc'; //多个语句写在一行
;;; //空语句
1 + 3; //没有意义的语句
标识符的规则
标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名,以及后面要提到的函数名。
大小写敏感
-
命名规则:
第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线_。
第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字0-9。
中文是合法的标识符,可以用作变量名
-
JavaScript 有一些保留字,不能用作标识符
arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。
if else 语句
语法
- if (表达式){语句} else {语句2}
{} 在语句只有一句时可以省略,但是依据程序员戒律:使用最没有歧义的写法,不建议省略
多个if…else语句可以连写
if (表达式) {
// 语句
} else if (表达式) {
// 语句
} else {
//语句
}
变态情况
if语句里面表达式写成a=1赋值语句,则表达式一直成立
- 如果不写{},if只管到后面第一个语句,而else代码块总是与离自己最近的那个if语句配对
a = 1;
if (a === 2)
console.log('a');
console.log('a等于2')
//以上输出为 a等于2
while语句
语法
While语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块。
while (条件) {
语句;
}
while语句包含变量初始化,条件判断,循环体,变量变化。四部分缺一不可,缺少任一部分都会导致while语句失去意义
var i = 0; //变量初始化
while (i < 100) { //条件判断
console.log('i 当前为:' + i); //循环体
i = i + 1; //变量变化
}
考点
var a = 0.1;
while ( a !== 1) {
console.log(a);
a = a + 0.1;
}
//死循环,直觉上10个0.1相加应该等于1, 但是js中浮点数相加值不能准确表示,所以a永远不等于1
for语句
语法
for语句是循环命令的另一种形式,可以指定循环的起点、终点和终止条件。
for (初始化表达式; 条件; 递增表达式) {
语句
}
for语句的三个部分(initialize、test、increment),可以省略任何一个,也可以全部省略。
for ( ; ; ){
console.log('Hello World');
}
考点
for (var i = 0, i < 5, i++) {
setTimeout( () => {
console.log(i);
}, 0);
}
// 结果将打印5个5,setTimeout(回调函数)过一会执行函数,但是先得把for循环执行完
// 把var改成let后,打印 0,1,2,3,4
break和continue
break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行。
break
break语句用于跳出代码块或循环。
var i = 0;
while(i < 100) {
console.log('i 当前为:' + i);
i++;
if (i === 10) break;
}
// 上面代码只会执行10次循环,一旦i等于10,就会跳出循环。
-
continue
continue语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。
var i = 0;
while (i < 100){
i++;
if (i % 2 === 0) continue;
console.log('i 当前为:' + i);
}
// 上面代码只有在i为奇数时,才会输出i的值。如果i为偶数,则直接进入下一轮循环。
label
语法
- JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置。
foo: {
console.log(1);
break foo;
console.log('本行不会输出');
}
console.log(2);
}
// 1
// 2
//上面代码执行到break foo,就会跳出区块
考点
```javascript { foo:1; //这个是什么? }
//foo是一个lable,语句就是1 ```
以上部分内容参考JavaScript教程