JS基本语法

81 阅读3分钟

表达式和语句

  • 表达式

    • 1+2这个表达式的值为3
    • add(1,2)这个表达式的值为函数的返回值(只有函数有返回值)
    • console.log表达式的值为其本身
    • console.log(3)该表达式的值为undefined
    • 值 ≠ 返回值;函数的值为其返回值。
  • 语句

    • var a=1 这就是一个语句
  • 注意点:大小写有区别:var A ≠ var a、object ≠ Object;只要不影响断句,空格和回车对函数无影响,只有return后面不能加回车,加了的话后面会自动写入'undefined' 。

  • 表达式和语法的区别

    • 表达式一般都有值,语句有时候有有时候冇
    • 语句一般会改变环境(声明、赋值)
    • 以上区别不绝对

标识符

  • 规则:第一个字符,可以是Unicode 字母也可以是 $_中文;后面的字符,除以上外还可以是数字。

  • 变量名

    var Φ = 2

    var $1 ='XXXX'

    var 你好 ='HI'

    var _ = 1(下划线最多×2)

    var 9$ 这种写法是不行的(Uncaught SyntaxError : Invalid unexpected token ),数字只能从第2位开始。

if else 语句

  • 语法:if (表达式) {语句1} else {语句2}
   //举例
      a=2
      if (a=1){
        console.log(a为'1')
      }else{
        console.log(a不为'1')
      }
      //a为1
  • 这里结果为什么是'a为1',因为=是赋值的意思,这里直接给a赋值为1,因此a≠2了。
  • 若要打印出结果'a不为1',则使 a === 1
   //举例
      a=2
      if (a === 1){
        console.log(a为'1')
      }else{
        console.log(a不为'1')
      }
      //a不为1
  • 省略{}的语法写法
    • if else特殊情况:语句1里嵌套 if else;语句2里嵌套 if else
   //举例1
      if (a<100)
        if (a<10)
          console.log('a小于10')
      //'a小于10'
      
        if (a<100){
        }else if (a>10000) {
            console.log('a>10000')
        } else{
        }
      //undefined
      //else if是else{}和if{}省略了{}后合并在一起的写法,因此这里有2对if else
    //举例2  
        a = 1
        if (a === 2)
            console.log('a');
            console.log('a等于2')
        //'a等于2'
       //省略了{},实际上if(a === 2)只对其后面第一个语句有意义。
      //两个语句用分号和逗号隔开意思完全不同,分号表示此句已经结束了,逗号表示此句未完。
  • 推荐语法写法(最没有歧义的写法)
       if (表达式) {
          语句
        }else if (表达式) {
          语句
        }else {
          语句
        }
  • 次推荐语法写法
       function fn(){
           if (表达式){
               return 表达式
           }
           if (表达式) {
               return 表达式
           }
           return 表达式
       }
  • witch 语句 (if…else…升级版,易错语法),大部分时候省略break就会出错。
      switch () {
            case " ":
                // …
                break;
            case " ":
                // …
                break;
            default:
                // …
        }
  • 问号/冒号/表达式表达式1? 表达式2: 表达式3,常用于简化if里只有1个语句 & else里只有1个语句的情况。
    function max(a,b){
        if (a>b) return a;
        else return b;
    }
    //以上可写为
    function max(a,b){
        return a>b ? a:b
    }
  • && 短路逻辑A && B && C && D取第一个假值或D,并不会取true/false
      if (window.f1){
          console.log('f1存在')
      }
      //以上可写为:
      window.f1 && console.log('f1存在')
      //'f1存在'
  • || 短路逻辑A||B||C||D取第一个真值或D,也不会取值true/false
      a||b 
      //等同于
      if (!a){
          b
      }else{}
      //取真值表达式,a是真则取a;a不是真,才执行后面内容
      a=a || 100
      //等同于
      if (a){
          a=a
      }else{
          a=100 
      }

while 循环

  • 语法:while (表达式) {语句}

  • 判断表达式的真假

    • 当表达式为真,执行语句,执行完再判断表达式的真假
    • 当表达式为假,执行后面的语句
  • while无返回值

   var i=0  //初始化
   while(i<10){  //判断
       console.log(i)  //循环体
       i = i+1   //增长
   }
     //举例:死循环代码
     var a = 0.1 
      var (a !== 1){ 
           console.log(a) 
          a = a + 0.1 
      }
      //因为浮点数不精确,所以永远不会等于1

for 循环

  • for循环即是while循环的语法糖

  • 语法

   for(语句1;表达式2;语句3){
       循环体
   }
  • 先执行语句1,然后判断表达式2:
    • 如果为真:执行循环体,再执行语句3
    • 如果为假,直接退出循环,执行后面语句
  • 举例
    for (let i=0;i<5:i++){
        console.log(i)
    }
   // 0 1 2 3 4
  // 执行完以上循环后,i的值最终值为'5',
    for (var i=0;i<5:i++){
        setTimeout(()=>{ [过一会执行]
            console.log(i)
        },0)
        console.log(i)
    }
    //以上循环执行后,打印出5个'5',
    var a = 1
    function fn(){
        console.log(a)
    }
    setTimeout(fn)
    // 5
    
    for(var i=0;i<5;i++){
    }
    setTimeout(()=>{console.log(i)})
    // 5
    
    for(var i = 0;i<5;i++){
        setTimeout(()=>{console.log(i)})
    }
    // 5个'5'
    
    for(let i = 0;i<5;i++){
        setTimeout(()=>{console.log(i)})
    }
    // 0 1 2 3 4
  • 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
  //以上代码,使用continue跳过'i%2===1'这一循环,到下一步-即数值为偶数时直接输出。

label 语句

  • 语法(foo-指代标识符)
     foo: {
         consoloe.log(1);
         break foo;
         console.log('此行不会输出');
     }
     console.log(2);
     // 2
      
     {
        foo:1 
     }
    //这表示 foo是一个label,它的内容为'1'