JavaScript 的基本语法

218 阅读3分钟

JavaScript表达式和语句

表达式

  • 1+2 表达式的值为3
  • add(1,2) 表达式的值为函数的返回值
  • console.log 表达式的值为函数本身
  • console.log(3) 表达式的值为undefined

语句

  • let a = 1 是一个语句

二者的区别

  • 表达式一般都有值,语句可能有也可能没有
  • 语句一般会改变环境(声明,赋值)
  • 上面俩句话并不是绝对的

大小写敏感

  • let a 和 let A 是不同的
  • object 和 Object 是不同的
  • function 和 Function 是不同的

空格

  • let a=1 和 let a = 1 没有区别
  • 加回车一般不会影响
  • 只有return后面不能加回车

标识符

规则

  • 第一个字符,可以是Unicode字母或($,_,中文)
  • 首字母外可使用数字

变量名是标识符

  • let _ = 1
  • let $ = 2
  • let ______ = 3
  • let 你好 = 4
  • let 你好2 = 5

注释

  • 注释一行使用//
  • 注释一段使用/代码块/
 //我这一行被注释了
 /*
    我这一段
    代码被注释了
 */

代码块

  • 把代码包在一块
{
    let a = 1
    let b = 2
}
  • 常与 if\for\while 合用

if语句

语法

  • if(表达式){语句1}else{语句2},如果if接的表达式成立,则执行语句1,否则执行语句2
  • {}在语句只有一句时可以省略

变态情况

  • a = 1
 if(a = 1){
     console.log('a是1')
 }else{
     console.log('a不是1')
 }

a = 1的意思为将a赋值为1,结果就是1,所以输出a是1 解决1:将=换成===,解决2:将常量放在左边,如1 = a,则会直接报错

  • 缩进常见面试套路
let a = 1
if(a === 2)
    console.log("a")
    console.log("b")

实际会输出"b",因为省略{}时,if的代码执行只到后面的第一行

推荐语法

if(表达式){
    语句
}else if(表达式){
    语句
}else{
    语句
}

次推荐语法,因为return后就不再执行后续代码

function(){
    if(表达式){
        return 表达式
    }
    if(表达式){
        return 表达式
    }
}

switch语句,if..else..的升级版

语法

let a = 1
switch(a){
    case '1':
        // ...
        break
    case '2':
        // ...
        break
    default:
        // ...
}
  • break一定要加上,少部分时候可以利用break
let a = 1
switch(a){
    case '1':
    case '3':
        console.log('单数')
        break
    case '2':
    case '4':
        console.log('双数')
        break
}
//输出为单数

问号冒号表达式(表达式1?表达式2:表达式3)最简单的if...else...写法

function max(a,b){
    if(a>b){
        return a
    }else{
        return b
    }
}
//改成问号冒号表达式写法
function max(a,b){
    return a>b?a:b
}

&&短路逻辑,也是用来代替if...else...

  • a && b && c && d 取第一个假值,或者d
  • 并不会取true/false
if(window.fn){
    console.log('fn存在')
}
//改成&&写法
window.fn && console.log('fn存在')

&&短路逻辑,也是用来代替if...else...

  • a || b || c || d 取第一个真值,或者d
  • 并不会取true/false
//用于判断一个变量是否存在
if(a){
    a = a
}else{
    a = 100 //保底值
}
//改成||写法
a = a || 100

while循环

语法

  • while(表达式){语句}
let i = 0
while(i<10){
    console.log(i)
    i = i + 1
}
  • 判断表达式的真假
  • 当表达式为真,执行语句,执行完再次判断表达式的真假
  • 当表达式为假,执行后面的语句
  • while(true){}会造成死循环
  • 面试题套路
let a = 0.1
while(a !== 1){
    console.log(a)
    a = a + 0.1
}
//会造成死循环,因为浮点数不精确

for循环,while循环的语法糖

语法

for(var i = 0;i < 10;i++){
    console.log(i)
}
  • 先执行let i = 0
  • 然后判断i < 10
  • 如果为真,执行console.log(i),然后执行i++
  • 如果为假,直接退出循环,执行后面的代码
  • 最后i为10
  • 面试题套路
for(var i = 0;i < 10;i++){
    setTimeout(console.log(i),0)
}
//输出10个10
//想要输出0--9,var改成let即可
//初始化可写在外面
var i = 0
for(;i < 10;i++){
    setTimeout(console.log(i),0)
}

break和continue

//break只会退出最近的for循环
for(let i=0;i<10;i++){
    if(i===5){
        break
    }
}

//continue会跳过一次循环,结果为只输出偶数
for(let i=0;i<10;i++){
    if(i%2===1){
        continue
    }
    console.log(i)
}

label语句

{
    a:1
}

foo:{
    console.log(1)
    break foo
    console.log(2)
}
//这个不是对象,是一个代码块,a是一个标签,里面是1

推荐书籍

  • 阮一峰的免费教程
  • 你不知道的javasc上卷