重看JavaScript--基本语法踩坑
刚开始学习JavaScript的时候,对于其基本语法,都只是看懂后就跳过了,知道大概怎么使用,也就是说知道一些正常情况下该怎么去使用,但是有时候遇到特殊的写法,就会踩到一些坑,最近又在重新看JS,记录一下这一次遇到的一些特殊的坑吧。
表达式和语句
关于语句和表达式的理解,阮一峰的书上有写到:
一般情况下,在js里每一行就是一个语句。
语句是为了完成某种任务而进行的操作,比如赋值语句:
var a = 1 + 2;
在这条语句中,上面的1+2就是表达式。
语句和表达式的区别在于,语句是为了进行某种操作,一般情况下不需要返回值,而表达式都是为了得到返回值,一定会返回一个值(这里的值不包括undefined)。
console.log(3)
这条语句也是一个表达式,虽然执行打印3,但是这个表达式的值就是undefined
空格和回车
在JavaScript中,空格和回车大部分的时间都没有实际的意义
var a=1
var a = 1
var a = 1
以上三种写法是没有什么区别的
var a
=
1;
console.log(a) // 1
function foo() {
return
1;
}
console.log(foo()) // undefined
虽然回车大部分时间也可以随便加,但是在 return 后面却不行,return 换行的话他就会返回一个 undefined
if语句
正常的 if 语句使用是比较简单的
// 写法一
if(1){
console.log(1);
}
// 写法二
if(1) console.log(1)
上面代码展示了 {} 在只有一句的时候可以省略,但是不建议这样做
可以看下面的例子
var a = 1
if(a === 2)
console.log(2)
console.log(1)
像上面的代码,就会打印 1, 这里 if 后面省略了 {},但是只有一句,相当于 console.log(2) 在 {} 里面。
switch语句
var b = 2;
switch (b) {
case 1:
console.log(1);
break;
case 2:
console.log(2);
case 3:
console.log(3);
break;
}
大家看一看上面的例子,晃眼一看,应该是打印 2,但是运行一下呢,却发现 2、3 都打印了,仔细一看就是 case 2 中没有加上 break,导致执行了 case 2 后又会继续执行 case 3 里面的语句。
所以大部分的时候,case 里面的 break 最好不好省略
逻辑语句
A && B && C && D 取第一个假值或者是D,并不是 true/false
A || B || C || D 取第一个真值或者是D,并不是 true/false
逻辑语句也是容易踩坑的点,我们平时经常用来做条件语句的判断,为 true 的时候就执行,这里可以看出来其实是返回了可以被判断为 true 的值才执行后面的条件语句