[关闭]
@demonly 2017-10-14T09:31:23.000000Z 字数 2060 阅读 998

基本概念

JavaScript


数据类型

typeof 操作符

对 null 使用 typeof 操作符返回"Object"

操作符

in 操作符

在对象中能够访问到指定属性时返回 true

  1. "length" in obj //true

typeof 操作符

返回数据的数据类型

  1. typeof obj

数组的返回值是"object"
多数浏览器中函数的返回值是"function",在某些浏览器中函数的返回值是"object"

位操作符

~按位非、&按位与、|按位或、^按位异或、<<左移、>>有符号右移、>>>无符号右移

语句

do-while 语句

  1. do {
  2. i += 2;
  3. } while (i < 10);

while 语句

  1. while (i < 10) {
  2. i += 2;
  3. }

for-in 语句

用于枚举对象的属性。

  1. for (var propName in window) {
  2. document.write(propName);
  3. }

label 语句

label 语句在代码中添加标签以便将来使用

  1. start for (var i=0; i < count; i++) {
  2. alert(i);
  3. }

break 和continue 语句

break 语句退出循环之后执行循环体后的语句,continue 语句退出循环之后继续从循环体顶部执行。
也可以在语句后添加标签来退出指定的循环体。

  1. outermost:
  2. for (var i=0; i < 10; i++) {
  3. for (var j=0; j < 10; j++) {
  4. if (i == 5 && j == 5) {
  5. continue outermost;
  6. }
  7. }
  8. }

with

with 语句将代码的作用域设置到一个特定的对象中,以下的代码都将在 location 对象下执行。

  1. with(location) {
  2. var qs = search.substring(1);
  3. var hostname = hostname;
  4. var url = href;
  5. }

switch 语句

  1. switch (i) {
  2. case 25:
  3. alert("25");
  4. break;
  5. default:
  6. alert("Other);
  7. }

let 和 const 命令

let 命令

块级作用域

ES6 支持块级作用域,不再需要立即执行匿名函数了。

const 命令

const 用来声明常量,一旦声明,其值就不能改变。const 同样不可以重复声明,只在块级作用域内有效,存在暂时性死区。

跨模块常量

const 声明的常量只在当前代码块有效,如果想设置跨模块常量可以采用下面的写法。

  1. export const A = 1;

全局对象的属性

let 命令、const 命令和 class 命令声明的全局变量不属于全局对象的属性。

变量的解构赋值

数组的解构赋值

ES6 允许通过模式匹配的方式为变量赋值,只要等号两边的模式相同,左边的变量就会被赋予对应的值。

  1. var [a, b, c] = [1, 2, 3];
  2. //不完全解构的情况依然可以成功
  3. let [x, y] = [1, 2, 3];
  4. x // 1
  5. y // 2

解构赋值允许指定默认值

  1. var [foo = true] = [];
  2. foo // true

对象的解构赋值

对象的解构赋值与数组的不同点在于对象的属性没有顺序,变量必须与属性同名才能够正确赋值。

  1. var { bar, foo } = { foo: "aaa", bar: "bbb" };

如果变量名与属性名不同,那么必须采用如下形式

  1. var { foo: baz } = { foo: "aaa", bar: "bbb" };

字符串的解构赋值

字符串也可以解构赋值,此时的字符串被转换成了一个类似数组的对象。另外类似数组的对象都有 length 属性,因此也可以对这个属性解构赋值。

数值和布尔值的解构赋值

解构赋值时如果等号右边是数值或者布尔值,则会先转为对象。

函数参数的解构赋值

  1. function add([x, y]){
  2. return x + y;
  3. }

上述代码中函数的参数是模式经过解构得到的变量 x 和 y。

圆括号问题

用模块封装代码

export 可以放在任何变量、函数或者类声明的前面,将变量导出到全局环境。export 后面加上 default 关键字可以导出默认值。
import 可以导入指定文件的指定变量,如果不指定使用大括号包裹则导入默认值。

  1. // 导出变量
  2. export var color = "red";
  3. // 导出默认值
  4. export default funciton (num1, num2) {
  5. return num1 + num2;
  6. }
  7. // 导入指定变量
  8. import { identifier1, identifier2 } from "./example.js"
  9. // 导入默认值
  10. import sum from "./example.js";
  11. // 导入时重命名
  12. import { default as sum, color} from "./example.js";
  13. import sum, { color} from "./example.js";
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注