JS的基本语法

85 阅读3分钟

表达式与语句


表达式

  • 1 + 2表达式的值为3

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


语句

var a = 1是一个语句

二者的区别

  • 表达式一般都有值,语句可能有也可能没有

  • 语句一般会改变环境(声明、赋值)

  • 上面两句话并不是绝对的

大小写敏感

  • vara和varA是不同的
,
  • object和Object是不同的

  • function 和 Function 是不同的

标识符
的规则


  • 第一个字符,可以是Unicode字母或$或_或中文

  • 后面的字符,除了上面所说,还可以有数字


变量名是标识符
,

var _ = 1var $  =  2var __ =  6var 你好 = 'h'

区块block

把代码包在一起


{

  let a = 1
  
let b = 2

}


常常与if/for/while合用

if语句

语法

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

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

非常态情况

  • 
表达式里可以非常变态,如a = 1
  • 语句1里可以非常变态,如嵌套的if else

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

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

a = 1if(a === 2)

  console.log('a')

  console.log('a等于2')

最终打出的是“a等于2”,if语句只能管一句

程序员的戒律:使用最没有歧义的写法

最推荐的写法:

if (表达式){

  语句

} else if (表达式){

  语句

} else {
  语句

}

次推荐的写法(函数中):

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

    return 表达式

  }

  if (表达式){

   return 表达式
  } 
  
return 表达式

}

switch语句


语法

switch (fruit) {
  case "banana":

  // ...break;
  case "apple":

  // ...break;

  default:

  // ...

}

大部分时候,省略break你就完了
,少部分时候,可以利用break,因此不推荐用,能看懂就行。

问号冒号表达式

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

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

等同于

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

if只有一个语句,else也只有一个语句的时候非常好用

&&短路逻辑

A&&B&&C&&D 取第一个假值或D
 并不会取true/false

最常用的用法

console && console.log && console.log('hi');

||短路逻辑

A||B||C||D取第一个真值或D
并不会取true/false

a = a || 100; //如果a存在就等于a,否则等于100

等同于

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

while
语法


while (表达式){语句}

  • 判断表达式的真假

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

  • 当表达式为假,执行后面的语句


注意死循环

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

也是死循环,因为浮点不稳定会跳过1

for循环

语法糖
,

for是while循环的方便写法

语法

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

  • 先执行语句1

  • 然后判断表达式2

  • 如果为真,执行循环体,然后执行语句3

  • 如果为假,直接退出循环,执行后面的语句

break 和 continue


退出所有循环v.s.退出当前一次循环

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

break只打断最近的一层循环,因此上述的i循环并没有被打断

1.png

label
语法


foo: {

  console.log(1);
  
break foo;

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

}

console.log(2);


面试可能会问到
{
foo: 1
}
不是对象,是标签,内容是1