美文网首页
JS的基本语法

JS的基本语法

作者: 饥人谷_折纸大师 | 来源:发表于2022-07-13 12:24 被阅读0次

    这篇博客旨在总结JS的基本语法,内容包括:表达式和语句、标识符的规则、注释、if else语句、while for 语句、break 和 continue以及label相关用法以及注意事项。

    表达式和语句

    表达式

    表达式(expression),指一个为了得到返回值的计算式。

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

    语句

    语句(statement)是为了完成某种任务而进行的操作,比如下面就是一行赋值语句。

    var a = 1 + 3;
    

    语句和表达式的区别在于,前者主要为了进行某种操作,一般情况下不需要返回值;后者则是为了得到返回值,一定会返回一个值。此外语句一般会改变环境(声明 赋值)
    注意:

    大小写敏感
    • var a 和var A是不同的
    • object和Object是不同的
    • function和Function是不同的
    空格
    • 大部分空格是没有实际意义的
    • var a=1和 var a = 1 没有区别
    • 加回车大部分也不影响,但是要记住return的后面不能加回车,如果回车了默认* 给你补undefined

    标识符

    标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名。

    规则

    • 第一个字符,可以是Unicode字母或$或_或中文
    • 后面的字符,除了上述所说,还可以是数字(下划线最多用俩)
    var a = 1
    var _ = 1
    var $ = 1
    var 你好 = 'hi'
    var $9 = 1
    

    注释

    源码中被 JavaScript 引擎忽略的部分就叫做注释,它的作用是对代码进行解释。

    //单行注释
    /*
    多行注释
    */
    

    注释分为好注释和不好的注释

    好的注释:

    • 踩坑注释
    • 为什么代码会写的奇怪,遇到什么bug

    不好的注释:

    • 把代码翻译成中文
    • 过时的注释
    • 发泄不满的注释

    区块

    JavaScript 使用大括号,将多个相关的语句组合在一起,称为“区块”(block)。

    {
    let a = 1
    let b = 1
    }
    

    常常与if/for/while合用

    if else 语句

    • 语法:
    if (表达式) {
    语句1
    } else {
    语句2
    }
    //{}在语句只有一句的情况下可以省略,但是不建议这么做
    

    变态情况:

    • 表达式可以变态,比如a=1
    • 语句1/2都可以很变态,比如再嵌套一个if else
    • 缩进也可以很变态比如
    a = 1
    if (a === 2)
        console.log('a')
        console.log('a等于2')
    

    此时,打印的结果是a等于2,原本应该是这样

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

    因为没有花括号,if只会执行到console.log(‘a’),第二个console.log()则是else的情况。逗号可以将两句变为一个语句,表示第一句没完.
    最推荐写法

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

    次推荐写法

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

    switch语句

    switch语句是if else的升级写法
    语法为:

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

    上面代码根据变量fruit的值,选择执行相应的case。如果所有case都不符合,则执行最后的default部分。

    • break
      大部分时候,省略break就完了
      小部分时候,可以利用break

    问号冒号表达式(三元运算符)

    (条件) ? 表达式1 : 表达式2
    

    举个例子

    function max(a, b) {
    if (a > b) return a
    else return b
    }
    

    等价于

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

    如果条件为true则返回表达式1的值,否则返回表达式2的值

    &&短路逻辑

    if (window.f1) {
    console.log('f1存在')
    }
    

    等价于

    window.f1 && console.log('f1存在’)
    

    A&&B


    截屏2022-07-13 10.18.24.png

    ||短路逻辑

    if (!a) {
    b
    } else { }
    

    等价于

    a || b
    

    如果a不存在则b

    a = a || 100
    if (a) {
    a = a
    } else {
    a = 100 //保底值
    }
    

    取第一个真值或者最后一个值

    while for 语句

    while循环

    • 语法
    whlie(表达式){语句}
    

    先判断表达式真假,当表达式为真,则执行语句且执行完再次判断表达式的真假;当表达式为假,则执行后面的语句。
    变态情况

    var a = 0.1//初始化
    while (a !== 1) {//判断
    console.log(a) //循环体
    a = a + 0.1 //增长
    }
    

    由于浮点数不精确导致a会跳过1,所以该while循环是一个死循环

    for循环

    • for循环是while循环的方便写法
    • 语法
    for (语句1; 表达式2; 语句3) {
    循环体
    }
    
    • 先执行语句1
    • 然后判断表达式2
    • 如果为真,则执行循环体,然后执行语句3
    • 如果为假,直接退出循环,执行后面的语句
    for (var i = 0; i < 5; i++) {
    console.log(i)
    }
    

    此时i的值为5,注意是先执行循环体,然后再执行语句3,所以i会比打印的最大的数大1。
    变态情况

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

    将会打印5次5,因为setTimeout是过段时间执行此代码,在for循环结束后i的值为5,"过段时间"会晚于for循环完成的时间,所以会打出5个5

    break和continue

    break为退出所有循环,而continue为退出当前循环

    for (var i = 0; i < 10; i++) {
    if (i % 2 === 1) {
    break
    }
    }
    

    结果为1

    for (var i = 0; i < 10; i++) {
    if (i % 2 === 1) {
    continue
    } else {
    console.log(i)
    

    打印结果为0,2,4,6,8
    注意
    break只会退出离它最近的一个for

    for (var i = 0; i < 10; i++) {
    for (var j = 101; j < 110; j++) {
    if (i === 5) {
    break
    }
    }
    console.log(i)
    }
    

    这个输出结果将会是0,1,2,3,4,5,6,7,8,9,因为i=5时只是退出了j循环,i循环还会运行

    label语句

    JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,标签的格式如下。

    label:
      语句
    
    • 语法
    foo: {
    console.log(1);
    break foo;
    console.log('本行不会输出')
    }
    console.log(2)
    

    输出结果为1,2

    {
    foo: 1
    }
    

    意思为一个label标签里面有个1

    相关文章

      网友评论

          本文标题:JS的基本语法

          本文链接:https://www.haomeiwen.com/subject/yjozbrtx.html