JavaScript(二):基本语法

138 阅读3分钟

JS的优秀之处并非原创,它的原创之处并不优秀。 ——Brendan Eich,JS之父,对早期JS的评价

表达式、语句、标识符

表达式

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

语句

var a = 1 是一个语句

两者区别

表达式一般都有值,语句可能有也可能没有
语句一般会改变环境(声明、赋值)
上面两句话并不绝对
注意!return后面不能加回车

标识符

  • 变量命名规则:第一个字符,可以是Unicode字母或$或_或中文。后面的字符,除了上面所说,还可以有数字。
  • 变量名是标识符
  • //起手写单行注释, /**/起手写多行注释
  • 好的注释:踩坑注解;为什么代码会写的这么奇怪,遇到了什么bug
  • 区块Block:{ }内写多行代码,常与if/for/while合用

if语句

语法

if(表达式){语句1}else{语句2}, {}在语句只有一句时可以省略,但不建议这样做。
最推荐使用的写法

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

switch语句

语法

模仿了C语言特性

switch (表达式) {
  case a:
    // ...
  case b:
    // ...
    break;
  default:
    // ...
}

注意: break多数情况下都要添加。

三元表达式

语法

这是最简单的if ... else ...写法
表达式1 ? 表达式2:表达式3

短路逻辑

  • A && B && C && D该语句会取第一个假值或最后一个表达式的值,并不会取truefalse
    举例: console && console.log && console.log('hi') ,因为早期IE浏览器没有console,所以在早期IE浏览器上该表达式会取第一个表达式的假值。

  • A || B || C || D取第一个真值或D,并不会去truefalse。 举例: a = a || 100 如果a存在则不动;如果a不存在,则给a赋值100。起到一个保底值的作用

while循环

语法: while (表达式) {语句}
do...while可以保证循环至少执行一次。一般用得不多。
变态题:下面这个是死循环吗?

var a = 0.1
while (a !== 1){
  console.log(a);
  a = a + 0.1;
  }

Answer is yes. 因为浮点数会丢精度,无法精确取到1.

for循环

同C语言语法相同: for(语句1; 表达式; 语句2) {循环体}
for是while循环的方便写法,aka语法糖。
变态题:下面这个代码会怎么输出?

for(var i = 0; i < 5; i++){
    setTimeout(() => { console.log(i); })
}

Answer is 5个5. setTimeout会使console延时输出,所以循环会先走完,i的值为5,再输出5个5.

break和continue

break退出当前所在循环。循环嵌套时,只会退出当前循环
continue跳过这次所在循环

label标签

(用的比较少,面试可能会问到)
js语言允许语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置。
标签的格式如下:

  label: 
    语句

更多内容可以看阮一峰的入门教程