JS语法入门篇1

目录

表达式与语句

标识符

if语句 (如果...那么...)

switch语句 (if...else...升级版)

问号冒号表达式(三元表达式)

&&短路逻辑

||短路逻辑

条件语句总结

while循环(当...时)

for循环

break 和 continue

label


  • 表达式与语句

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

1+2 表达式的值为3

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

console.log表达式的值为函数本身   console.log(3)表达式的值为多少? undifine

   

语句(为了完成某种任务而进行的操作

var a=1是一个语句

二者的区别:

表达式一般都有值,语句可能有也可能没有,语句一般会改变环境(声明、赋值)

注意:大小写敏感,不要写错
var a和var A是不同的, object和 Object是不同的,function和 Function是不同的
 

空格
大部分空格没有实际意义
var a= 1和var a=1没有区别
加回车大部分时候也不影响
注意:有一个地方不能加回车,那就是return后面

  • 标识符

规则
第一个字符,可以是 Unicode字母或$或_或中文后面的字符,除了上面所说,还可以有数字
变量名是标识符

var _= 1var $ =2

var_____=6

var你好='hi'
 

注释

  1. 踩坑注解
  2. 为什么代码会写得这么奇怪,遇到什么bug
     

区块block(把代码包在一起)
{
let a = 1

let b = 2

}
常常与if / for / while合用
 

  • if语句 (如果...那么...)

语法

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

在语句只有一句的时候可以省略,不建议这样做·

变态情况:
√表达式里可以非常变态,如a= 1,一个=是赋值


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

 

 这样的的结构看起来很奇怪对吧?其实它只是省略了第一个if后面的{}

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

===

 else if也只是省略了{}

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

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


为什么结果为a等于2呢?

因为if后面省略了{},而省略之后的if只能管到它后面的第一个语句,管不到console.log( 'a等于2'),所以这句照常执行。

为什么两次显示结果不一样呢? 

,(逗号)表示这句话还没结束console.log( 'a '),console.log( 'a等于2'),所以这算是一个语句所以不执行后面的,而;(分号)表示一个语句结束,所以结果是a等于2

最推荐使用的写法
if(表达式){

    语句

}else if(表达式){

    语句

}else {

    语句

}
 

次推荐使用的写法

function fn(){

    if(表达式){ 

         return表达式

}

    if(表达式){

        return 表达式

}

    return 表达式

}
 

  • switch语句 (if...else...升级版)

语法
switch (fruit) {

    case "banana" :

        // ...

      break;

    case "apple" :

      // ...

       break ;

default:

// ...
}


break
大部分时候,省略break你就完了,不加break就不会跳出switch结构,不管后面条件是否符合都会执行,直到遇到第一个break才会跳出switch结构,少部分时候,可以利用break。
 

  • 问号冒号表达式(三元表达式)

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

 

三元表达式常用于简化if和else中都只有一个语句的表达

  • &&短路逻辑

A&& B && C &&D取第一个假值或D

若A为假,则后面的都不执行,若都为真就都执行,直到最后一个

并不会取true / false


  • ||短路逻辑

A|| B||C|D取第一个真值或D

若A为真,则后面的都不执行,若都为假就取D

并不会取true / false

  • 条件语句总结

条件语句

if ...else ...

switch

A? B:C

A && B

fn && fn()

A || B

A=A|| B
 

  • while循环(当...时)

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

判断表达式的真假

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

当表达式为假,跳出while,执行后面的语句

       

 while语句发现表达式不成立时就会立马跳出循环,所以它只会打印到4就结束了。while表达式为假的时候,while语句是没有返回值的。

这是个死循环,你要是敢运行你就是猪!

注意:

  >>>

这是个死循环,因为是浮点数,不精确。它会永远跳过==1一直执行

其他
 do...while

 do...while是 while 循环的变体。该循环会执行一次代码块,在检查条件是否为真之前,然后如果条件为真的话,就会重复这个循环。

  • for循环

语法糖( for是 while循环的语法糖)

for是 while循环的方便写法

方便在哪?

写while时

var i=0.1            //初始化

while(i !==1){     //判断
   console.log(i) //循环体
    i=i+1;            //增长
}

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


先执行语句1(语句1只执行一次)

然后判断表达式2如果为真,执行循环体,然后执行语句3

如果表达式为假,直接退出循环,执行for循环后面的语句

变态问题:

 

 执行完for之后,i为什么是5呢?

因为每次执行完循环体再执行i++,当i=4时执行循环体然后执行i++,i就是5了!

这个循环会执行5次,setTimeout等会儿执行所以等会儿之后i就变成了5,将它比喻为闹钟就是,setTimeOut相当于我一个n点的闹钟,这个for循环相当于我设了5次闹钟,把这个n点的闹钟放进5次循环里,它就会执行5次。

 声明变量用let情况就不一样啦,关于let我用了两个月的时间才理解 let - 知乎

  • break 和 continue

退出所有循环V.S.退出当前一次循环

break会直接跳出当前循环,不执行语句3(增长),所以下图i=1就没有执行i++了

 break只会跳出离他最近的那个循环

continue是跳过本次循环,但不会跳过整个循环,除以2余1就跳过,所以单数都跳过了

  • label

语法

foo: {
console.log(1);

break foo;
console.log( '本行不会输出');

}
console.log(2);

上面的a是什么鬼?

a是一个label,它的语句是1


本文为$Iron的原创文章,著作权归本人和饥人谷所有,转载务必注明来源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值