JavaScript学习之基础语法

2019-01-11  本文已影响12人  wiOS

1.变量

JavaScript 的变量名区分大小写,A和a是两个不同的变量。如果只是声明变量而没有赋值,则该变量的值是undefined。undefined是一个特殊的值,表示“无定义”。

var a;
a // undefined

如果一个变量没有声明就直接使用,JavaScript 会报错,告诉你变量未定义。

x
// ReferenceError: x is not defined

1.1变量的提升

javaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)

console.log(a);
var a = 1;

上面的语法不会报错,因为存在变量提升,它的实际运行会是这样

var a;
console.log(a);
a = 1;//undefined

输出的结果是undefined

2.标识符(identifier)

规则

var 1// Unexpected number,第一个字符不能是数字
var ** //Unexpected token ** 标志符中不能有星号
var -d //Unexpected token - 标志符中不能有减号或连字符
var u+1 =3 //Unexpected token + 标志符中不能有加号

JavaScript 有一些保留字,不能用作标识符:arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、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.注释

// 单行注释
<!-- 单行注释
--> 单行注释(只有在行首,其他地方被当作运算符)
/*
多行
注释
*/

4.区块

对于var命令来说,JavaScript 的区块不构成单独的作用域(scope)

{
  var a = 1;
}

a // 1

上面代码中,对于区块内部的a变量,在区块外部依然可以访问,在JavaScript中,区块一般用来构成复杂的语法

5.条件语句

5.1 if 和 if ... else语句

if语法结构

if(条件) {//条件是一个bool值,true 或 false
  语句
}
var i = 2;
if (i == 2) {
  console.log('i的值为2'); //i的值为2
}
赋值表达式(=)
相等运算符(==)
严格相等运算符(===)

if ... else 语法结构

if (条件) {
  // 满足条件时,执行的语句
} else {
  // 不满足条件时,执行的语句
}

5.2 switch语句

语法结构

switch (a) {
  case "a":
    // 语句a...
    break;
  case "b":
    //语句b ...
    break;
  default:
    // 语句default...
}
(条件) ? 表达式1 : 表达式2
当条件为true时,执行表达式1 否则执行表达式2
var i = 2;
var a;
i == 2  ?  a = i : a = 3
console.log(a)//a = 2

6.循环语句

for循环

for (初始化表达式; 条件; 递增或递减表达式) {
  语句
}
var a = 3;
for (var i = 0; i < a; i++) {
  console.log(i);
}
// 0 1 2

var b = 3;
for (var i = b; i > 0; i--) {
  console.log(i);
}
//3 2 1

while 循环

while(条件) {
语句
};

do...while循环

do {
语句
}while(条件);

eg:
var i = 5;
do {
   console.log('run');
   i--;
   console.log(i);
}while(i > 1);
//run 4 3 2 1

不管条件是否为真,do...while循环至少运行一次

break和continue

break语句用于跳出代码块或循环

for(i = 0; i < 5; i ++) {
    if(i == 3) {
      console.log('break');
      break;
    }
    console.log(i);
}
输出:0 1 2 break

continue语句用于跳出当次循环,继续执行下一次循环(如果有)

for(i = 0; i < 5; i ++) {
    if(i == 3) {
      console.log('continue');
      continue;
    }
    console.log(i);
}
输出:0 1 2 continue 4

7.标签(label)

相当于定位符,用于跳转到程序的任意位置,标签通常与break语句和continue语句配合使用,跳出特定的循环

label:
  语句
test: 
    for(i = 0; i < 5; i ++) {
      for(j = 0; j < 5; j ++) {
           if(j == 3) {
            break test;
           }
           console.log('i = ' + i + `, j = ` + j);
        }
    }
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2

参考:https://wangdoc.com/javascript/basic/grammar.html

上一篇下一篇

猜你喜欢

热点阅读