表达式和语句

表达式

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

语句

var a = 1是一个语句

区别

表达式一般都有值,语句可能有也可能没有
语句一般会改变环境(声明、赋值)
上面两句话并不是绝对

标识符的规则

规则

第一个字符,可以是Unicode字母或$或_或中文
后面的字符,除了上面所说的,还可以是数字
var 9$ 是不符合规则的命名,会报错,第一个字符不能是数字

以下命名都是符合规则的:
var _ = 1
var $ =2
var 你好 =’hi’

if else语句

语法

if (表达式) {语句1} else {语句2}———如果表达式成立,执行语句1.否则,执行语句2

变态情况:

  1. a = 2
  2. if(a = 1){
  3. console.log('a是1')
  4. }else{
  5. console.log('a不是1')
  6. }

结果是打印出’a是1’.因为=不是等于的意思,是赋值的意思。a=1表示a赋值为1,所以打印出a是1。应该改为a === 1,才会打印出’a不是1’

推荐写法

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

while循环

语法

while(表达式){语句}
判断表达式的真假
当表达式为真,执行语句。执行完再判断表达式的真假
当表达式为假,执行后面的语句

例子

  1. var i =0
  2. while(i < 10){
  3. console.log(i)
  4. i++
  5. }

变态

  1. var a = 0.1
  2. while(a !== 1){
  3. console.log(a)
  4. a=a + 0.1
  5. }

这样会死循环。因为JS数字式以浮点数存储,加起来不一定是整数

for循环

语法

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

例子

  1. for(var i = 0;i < 10;i++){
  2. console.log(i)
  3. }

变态

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

结果打印出的是5。因为for语句的逻辑是
先执行语句1
然后判断表达式2
如果是真,执行循环体,然后执行语句3
如果为假,直接退出循环,执行后面的语句
题目设置了时间。就是说,当i=5的时候,没有执行循环体,然后去执行语句3也就是i++了。

break和continue

区别

break(退出所有循环)和continue(退出当前一次循环)

例子1:

  1. for(var i=0;i<10;i++){
  2. if(i%2===1)//i除以2的余数是一,就是单数啦
  3. break
  4. }

输出是i的值1,break退出所有循环

变态:

  1. for(var i =0;i<10;i++){
  2. for(var j = 101;j < 111; j++){
  3. if(i===5)
  4. break
  5. }
  6. console.log(i)
  7. }

打印出来是0,1,2,3,4,5,6,7,8,9.因为break值退出了j里面的循环,i的循环没退出

例子2:

  1. for(var i=0;i<10;i++){
  2. if(i%2===1)//i除以2的余数是一,就是单数啦
  3. continue
  4. }else{
  5. console.log(i)
  6. }

输出是i的值0,2,4,6,8。因为当i为单数的时候退出当前循环,所以剩下来的都是双数

label

{
foo: 1
}
foo是一个lable,语句是一个1