JavaScript 基本语法

489 阅读5分钟

1. 表达式和语句

表达式与语句的区别并不明显

一般情况下,表达式都有值,语句可能有也可能没有,而语句会改变环境(例如声明、赋值等)

那么什么是表达式?从 MDN 我们可以知道,表达式是一组代码的集合,它返回一个值,但这个定义看起来还是太抽象了,下面我们举一些例子

  • 1 + 2 是一个表达式,值为 3
  • add(1,2) 是一个表达式,表达式的值为函数的返回值
  • console.log 是一个表达式,表达式的值是函数本身,即 undefined
  • console.log(3) 是一个表达式,表达式的值是 undefined 而不是 3,3 只是打印出来的东西

需要注意的是,值与返回值是不一样的,只有函数有返回值

那么什么是语句?一般我们将能改变环境的东西称为语句,例如 var a = 1 就是一个语句,它给当前环境新定义了一个变量 a 并赋值为 1

2. 标识符的命名规则

标识符是我们取变量名或者函数名时用到的符号

标识符的规则是,第一个字符,可以是 Unidcode 字母、$ 、_ 、中文,而后面的字符除了前面所说的内容外还可以是数字,例如

var _ = 1 
var _1 = 11
var $ = 2
var $2 = 22
var 哈哈 = 3
var 哈哈3 = 33
var Ⅳ = 4
var Ⅳ4  = 44

但是我们平时在写程序时还是应该使用驼峰命名法,例如判断当前时间是否是你所想要的时间

var isRightTime = true

3. if else 语句

if esle 的语法为 if(表达式){语句一} else{语句二},{}中的语句只有一句时 {} 可以省略,但是为了方便我们看代码,建议还是保留 {} 。下面举一个例子

var a = 1
if( a === 1){
    console.log("相等")
}
else{
    console.log("不相等")
}

上面的代码定义了 a ,并判断 a 的值是否为 1 ,代码运行结束后控制台会输出 相等

除了上面的写法外 if else 还能进行嵌套和并列判断

var a = 2
if(a > 0){
    if(a % 2 === 0){
        console.log("a 是双数")
    }
    else{
        console.log("a 是单数")
    }
}
var b = 3
if(b === 1){
    console.log("b 的值是1")
}
else if(b === 2){
    console.log("b 的值是2")
}
else if(b === 3){
    console.log("b 的值是3")
}
else{
    console.log("b 的值是其他")
}

4. while 和 for 语句

while 的语法为 while(表达式){语句} ,使用 while 时要注意判断退出循环的条件,否则容易陷入死循环,while 的使用例子如下

var i = 1
while(i < 4){
    console.log(i)
    i++
}

上面的代码会依此输出 1 ,2 ,3

5. for

for 是 while 的语法糖,可以简化 while ,语法为 for(语句1;表达式2;语句三){语句}使用 for 可将上面 while 的代码改写为

for(var i=1; i<4; i++){
    console.log(i)
}

与 while 的代码相比更加简便

6. break 和 continue

break 用于退出当前的循环, continue 用于退出当前这次循环,二者的使用例子如下

for(var i=1; i<5; i++){
    for(var j=10; j<13; j++){
        if(j === 11) break
        console.log(j)
    }
    if(i === 3) continue
    console.log(i)
}

上面代码的结果为 10 ,1 ,10 ,2 ,10 ,10 ,4 ,这是因为内层循环每次在 j 的值为 11 时就推出了循环,而外层循环在 i 的值为 3 时跳过了当前的循环,故没有打印出 3

7. label

lable 在我们日常写代码时基本不用使用到,它的语法为 标识符:{语句} ,例如

foo:{
    console.log(1);
    break foo;
    console.log('这一行是不会输出的')
}
console.log(2);

上面代码输出的结果为 1 ,2 ,其中 foo 是代码块的名字, break foo 是退出当前代码块,一般只会在面试中出现,可以回答这是一个 label ,里面有语句

8. 其他

问号冒号表达式

语法为表达式1?表达式2:表达式3 ,这个表达式可以用来代替一些简单的 if else 语句,例如我们可以将上面的一个 if else 例子改写为

var a = 1
a === 1 ? console.log("相等") : console.log("不相等")

表示如果 a === 1 成立就执行问号后的语句,不成立的话执行冒号后的语句

&& 短路逻辑

&& 是电路中的与操作,一般表示只有两者都为真结果才是真

而在 JavaScript 中它表示的意思是,如果 && 左边的语句为假,就执行左边的语句,左边的语句为真的话就执行右边的语句,无论右边的语句的真假。下面我们通过一个例子来看一下具体的使用

console && console.log && console.log("hello")

上面的语句的意思是先检查 console 是否存在, 存在的话再检查 console.log 是否存在,都存在的话最后执行打印出 hello 的语句。因为 IE 浏览器没有 console ,所以该语句可以在 IE 中使用

从上面的例子也可以看出,有多个 && 符号时,结果会取第一个假的值或者最后一个值

|| 短路逻辑

|| 是电路中的或操作,一般表示只要两者中有一个是真的结果就是真

而在 JavaScript 中它表示的意思是,如果 || 左边的语句为真,那结果就是左边的语句,如果左边的语句是假的话,那么结果就是右边的语句。下面我们通过一个例子来看一下具体的使用

var a 
a = a || 10

上面的代码先定义了 a ,然后判断 a 当前是否有取值,如果有的话 a 的值保持不变,没有的话 a 的值就赋为 10

有多个 || 符号时,结果取第一个真的值或者最后一个值