JavaScript 是一种轻量级的脚本语言。适合嵌入其他大型应用程序中,例如:浏览器环境和服务器环境(node)中。其本身只提供简单的核心语法,不提供任何与 I/O(输入/输出)或者类似的API,实现这些功能主要是去调用宿主环境提供的底层 API。
一.基本介绍
- JavaScript提供的核心语法:基本的语法构造(比如操作符、控制结构、语句)和标准库(就是一系列具有各种功能的对象比如Array、Date、Math等)。
- JavaScript提供的外部能力:调用各种宿主环境提供额外的 API
- JavaScript在浏览器环境中的API分类:
- 浏览器控制类:操作浏览器
- DOM 类:操作网页的各种元素
- Web 类:实现互联网的各种功能
- JavaScript在服务器环境中(Node),提供操作系统变量,网络通信,文件写入写出等能力
二.语句
-
JavaScript是一个解释型语言,每一行就是一个语句,以
;
结尾,如下:var a = 1 + 3;
-
分号前没有任何内容,为空语句,如下表示三个空语句:
;;;
三.变量
-
变量是对值的引用,如下:
var a = 1;
-
变量对大小写敏感
a
,A
是不一样变量 -
只声明变量,没有赋值则值为
undefined
,如下:var a; a // undefined
-
使用 var a, b; 方式声明多个变量
-
JavaScript 是一种动态类型语言,变量可以随时修改类型,如下:
var a = 1; a = 'Hi!';
-
变量提升,JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting),如下
console.log(a); var a = 1;
上述代码输出
undefined
,因为存在变量提升,执行代码过程类似如下方式:var a; console.log(a); a = 1;
四.标识符(变量名)
- 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。
五.注释
//
单行注释,/* */
多行注释
六.区块
-
使用大括号,将多个相关的语句组合在一起为区块,主要配合
for
、if
、while
、function
等形成作用域,单独使用情况较少。 -
对于var命令来说,JavaScript 的区块不构成单独的作用域(scope),如下:
{ var a = 1; } a // 1
七.条件语句
1.if结构
-
如下2种写法都可以
if (m === 3) m = m + 1; //或者 if (m === 3) { m += 1; }
2.if…else 结构
-
if/else/else if
if (m === 0) { // ... } else if (m === 2) { // ... } else { // ... } //或者 if (m === 3) { // ... } else { // ... }
-
switch 结构,如下执行相应的case。如果所有case都不符合,则执行最后的default部分
switch (fruit) { case "banana": // ... break; case "apple": // ... break; default: // ... }
3.if…else 结构
-
三元运算符,范例如下:条件成立执行
:
前代码,不成立执行后面代码var even = (n % 2 === 0) ? true : false; //与如下逻辑等同 var even; if (n % 2 === 0) { even = true; } else { even = false; }
八.循环语句
1.while 循环
-
While语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块。
var i = 0; while (i < 100) { console.log('i 当前为:' + i); i = i + 1; } //如下是一个无限循环 while (true) { console.log('Hello, world'); }
2.for 循环
-
for循环语句,可以指定初始化表达式,条件表达式,递增表达式
var x = 3; for (var i = 0; i < x; i++) { console.log(i); } //如下是一个无限循环 for ( ; ; ){ console.log('Hello World'); }
3.do…while 循环
-
与while 循环相似,特点是最少执行一次
var x = 3; var i = 0; do { console.log(i); i++; } while(i < x);
九.执行跳转
1.break 语句
-
break 语句,跳出循环语句,不再执行
//当i等于3的时候就会跳出循环,不再执行 for (var i = 0; i < 5; i++) { console.log(i); if (i === 3) break; }
2.continue 语句
-
continue 语句,跳出本次循环,余下代码不再执行,执行下次循环
var i = 0; while (i < 100){ i++; if (i % 2 === 0) continue; console.log('i 当前为:' + i); }
-
不带参数的break语句和continue语句只跳转一层循环
3.标签(label)
-
label,相当于定位符,用于跳转到程序的任意位置,标签的格式如下
label: 语句
-
label标签可用于跳出循环或者跳出代码块
//跳出循环 top: for (var i = 0; i < 3; i++){ for (var j = 0; j < 3; j++){ if (i === 1 && j === 1) break top; console.log('i=' + i + ', j=' + j); } } //跳出代码块 foo: { console.log(1); break foo; console.log('本行不会输出'); } console.log(2);