关于javascript:JS基础语法

42次阅读

共计 1424 个字符,预计需要花费 4 分钟才能阅读完成。

ES 6 之前的版本都是垃圾,ES 6 为了兼容之前的版本所以带有一半垃圾
ES 2019 与 ES 6 差异不大
上面讲的都是 ES 6 版本

表达式和语句

  • 1+ 2 表达式的 是 3
  • add(1,2)表达式的值是函数的 返回值
  • console.log(3)的值是 Undefined,因为返回值是 undefined. 尽管确实会打印 3

JS 大小写敏感

回车

  • 回车在大部分没有理论影响
  • 只有一个中央不能加回车,那就是 return 前面, 否则会返回 undefiend

标识符(变量名属于标识符)

其余标识符用到再说
规定如下:

  • 第一个字符,能够是任意 Unicode 字母(包含英文字母、希腊字母、中文)、下划线、$ 符。
    不能够是数字结尾
  • 第二个字符及前面的字符,除了 Unicode 字母、美元符号和下划线,还能够用数字 0 -9

正文

  • 语法和其余语言一样
  • 正文不是越多越好
  • 因为什么业务场景所以代码会写的这么奇怪,这能够写正文
  • 踩过的坑,遇到的 bug 能够写正文

if 语句

if(表达式){}中的 {} 在只有一个语句时能够省略(不倡议这样写),留神有时候一行可能有两个语句

缩进能够十分变态,面试题成心省略花括号:

const a = 1;
if (a === 2)
    console.log('a')
    console.log('a 等于 2')

最终的后果会打印出 a 等于 2,if 语句实际上只作用于console.log('a')

Switch 语句

不举荐应用
每个 case 都须要写一个 break,除非你要贯通执行好几个 case

&&(与)短路逻辑

有一个假的就不看前面的式子
罕用写法:
fn&&fn()
fn 存在就调用,不存在就不必

||(或)短路逻辑

有一个真的就不看前面的式子

a||b
等价于
if(!a) {b}

常见的利用场景就是给 a 设定默认值(保底值)

a = a || 100
意思是如果 a 存在,就 a = a 即什么都不做, 如果 a 不存在, a=100
等价于
if (a) {a = a} else {a = 100}

while 循环

面试题

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

因为浮点数的计算不准确,所以以上代码会死循环

for 循环

面向面试:

for (let i = 0; i < 5; i++) {console.log(i)
}
请问这里打印出的 i 是多少?i 是 undefined. 因为 Let 申明的变量不会变量晋升
setTimeout 就是过一段时间执行
for (var i = 0; i < 5; i++) {setTimeout(()=>{console.log(i)
    }, 0)
}

会打印出 5 次 5

咱们曾经晓得 for (var i = 0; i < 5; i++) {}执行结束后,i 的值是 5

而 setTimeout 就是过一段时间执行,而 for 循环是当前任务,所以这段代码意思就是说等到 for 循环执行结束了,再打印 5 次 i,所以就会打印 5 个 5

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

当把 var 换成 let, 就会打印出 0, 1, 2, 3, 4
因为 js 为了满足一些人的一般思维成心弄了另一套 for 机制

label

简直不必,只有面试 5% 可能考

{a:1;}
  • 意思是有一个代码块,代码块里有一个 label(标签)
  • a: 1 示意这个标签是 a, a 的值是 1
  • 以上代码不是一个对象
foo: {console.log(1)
    break foo;
    console.log('本行不会输入')
}
console.log(2)

foo 示意 label 的标识符是 foo, break foo 示意退出以后的 Label, 所以代码会输入 1,2

正文完
 0