重看JavaScript--基本语法踩坑

282 阅读2分钟

重看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 的值才执行后面的条件语句