JS基本语法

167 阅读3分钟

表达式与语句

表达式

  • 1+2表达式的为3

  • add(1,2)表达式的值为函数的返回值

  • console.log表达式的值为函数本身

  • console.log(3)表达式的值为undefinde

语句

  • var a = 1是一个语句

二者的区别

  • 表达式一般都有值,语句可能有也可能没有

  • 语句一般会改变环境(声明,赋值)

  • 上面两句话并不是绝对的

大小写敏感

不要写错

  • var a和var A是不同的

  • object和Object是不同的

  • function和Function是不同的

空格

大部分空格没有实际意义

  • var a = 1和var a=1没有区别

  • 加回车大部分时候也不影响

  • 只有一个地方不能加回车,那就是return后面

标识符

规则

  • 第一个字符,可以是Unicode字幕或$或_或中文,不能是数字,数字可以放在第二位

1. var$9 √

2. var9& ×(语法错误)

  • 后面的字符,除了上面所说,还可能有数字

变量名是标识符

  • var _ = 1
  • var $ = 2
  • var ______ = 6
  • var 你好 = 'hi'

注释的分类

不好的注释

  • 把代码翻译成中文,过于简单的注释

  • 过时的、跟不上代码修改的注释

  • 发泄不满的注释

好的注释

  • 踩坑、重要的注释

  • 代码写的奇怪、遇到bug的注释

区块block

把代码包在一起

{
    let a = 1
    let b = 2
}
  • 常常与if/for/while合用

if语句

语法

  • if(表达式){语句1}else{语句2}

  • {}在语句只有一句的时候可以省略,不建议这么做

变态情况

  • 表达式里可以非常变态,如a = 1

image.png

  • 语句1里可以非常变态,如嵌套的if else

  • 语句2里可以非常变态,如嵌套的if else

  • 缩进也可以很变态,如面试题常常下套

  • 没有花括号的if只管提到第一个语句

image.png

没有歧义的写法

最推荐的写法

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

次推荐的写法

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

switch语句

语法

switch (fruit) { 
  case "banana":
    //...
    break;
  case "apple": 
    //...
    break;
  default: 
    //...
}

break

  • 大部分时候,省略break就成了死循环了

  • 少部分时候,可以利用break

问好冒号表达式

表达式1?表达式2:表达式3

function max(a,b){
  return a>b ? a: b
}

短路逻辑

&&短路逻辑

  • &&B&&C&&D取第一个假值或D
  • 并不会取true/false

image.png

||短路逻辑

  • A||B||C||D取第一个真值或D
  • 并不会取true/false

总结

条件语句

  • if...else...

  • switch

  • A?B:C

  • A&&B

  • fn&&fn()

  • A || B

  • A = A || B

while

语法

  • whlie(表达式){语句}

  • 判断表达式的真假

  • 当表达式为真,则执行语句,执行完再判断表达式的真假

  • 当表达式为假,执行后面的语句

do...whlie

  • 先执行一次语句,在判断表达式真假

for循环

for是whlie循环的方便写法

语法

  • 语法
for(语句1; 表达式2; 语句3){
  循环体
}
  • 先执行语句1

  • 然后判断表达式2

  • 如为真则执行循环体,然后执行语句3

  • 如为假则直接退出循环,执行后面的语句

break和continue

  • break :推出所有循环
  • continue :退出当前一次循环

lable语句

语法

foo: {
  console.log(1);
  break foo;
  console.log('本行不会输出')
}
console.log(2)
//输出
1
2

面试

{
  foo: 1;
}

//上面的东西是什么
//不是对象,是一个foo标签,标签的内容是1
1