JS的基本语法

143 阅读3分钟

1. 表达式和语句

1.1 概念和举例

  • 语句(statement)是为了完成某种任务而进行的操作,一般会改变环境(声明、赋值),可能有值也可能没有
var a=1 是一个语句
  • 表达式(expression),指一个为了得到返回值的计算式,一般都有值
1+2表达式的值为3
add(1+2)表达式的值为函数的返回值
console.log的值为函数本身
console.log(3)表达式的值为3
  • 区别

语句和表达式的区别在于,前者主要为了进行某种操作,一般情况下不需要返回值;后者则是为了得到返回值,一定会返回一个值。

1.2 注意点

  • 大小写敏感
  • 大部分空格和回车都没有意义

特例:return后不能加回车,如下面例子会输出undefined

function fn() {
   return 
   3
 }

2. 标识符的规则

标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名、函数名。JavaScript 语言的标识符对大小写敏感,所以a和A是两个不同的标识符。

标识符有一套命名规则,不符合规则的就是非法标识符。JavaScript 引擎遇到非法标识符,就会报错。标识符命名规则如下。

  • 第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号($)、下划线(_)和中文。

  • 第二个字符及后面的字符,除了 Unicode 字母、美元符号、下划线和中文,还可以用数字0-9。

JavaScript 有一些保留字,不能用作标识符:
arguments、breakcase、catch、class、const、continue、debugger、default、delete、doelse、enum、evalexport、extends、false、finally、forfunctionif、implements、import、
in、instanceof、interface、let、new、null、package、private、protected、public、return、
static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。

3. if else 语句

  • if (表达式) {语句1} else {语句2}
  • { }在语句只有一句的时候可以省略,但不建议这样做
  • 推荐写法:
if (表达式) {
  语句1
} else if (表达式) {
  语句2
} else (表达式) {
  语句3
}
function fn() {
   if (表达式) {
   return (表达式)
 }
 if (表达式) {
   return (表达式)
 }
 return (表达式)
}
  • 陷阱:下面例子会输出a等于2,因为省略花括号,if只会管到第一句
a=1
if (a===2)
console.log("a")
console.log("a等于2")

4. while 循环, for 循环

while (表达式) {语句}
  • 判断表达式真假
  • 当表达式为真,执行语句,执行完再判断表达式真假
  • 当表达式为假,执行后面的语句
for(语句1;表达式2;语句3){
    循环体
}
  • 先执行语句1
  • 然后判断表达式2
  • 如果为真,执行循环体,然后再执行语句3
  • 如果为假,直接退出循环,执行后面的语句

5. break和continue

break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行。

  • break语句用于跳出代码块或循环。
var i = 0;

while(i < 100) {
  console.log('i 当前为:' + i);
  i++;
  if (i === 10) break;
}

上面代码只会执行10次循环,一旦i等于10,就会跳出循环。

  • continue语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。
var i = 0;

while (i < 100){
  i++;
  if (i % 2 === 0) continue;
  console.log('i 当前为:' + i);
}

上面代码只有在i为奇数时,才会输出i的值。如果i为偶数,则直接进入下一轮循环。

如果存在多重循环,不带参数的break语句和continue语句都只针对最内层循环。

6. label

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

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

上面代码执行到break foo,就会跳出区块。

{
foo: 1
}

问:上面的东西是什么

答:这是一个lable,语句是1