@demonly
2017-10-14T09:31:23.000000Z
字数 2060
阅读 998
JavaScript
对 null 使用 typeof 操作符返回"Object"
在对象中能够访问到指定属性时返回 true
"length" in obj //true
返回数据的数据类型
typeof obj
数组的返回值是"object"
多数浏览器中函数的返回值是"function",在某些浏览器中函数的返回值是"object"
~
按位非、&
按位与、|
按位或、^
按位异或、<<
左移、>>
有符号右移、>>>
无符号右移
do {
i += 2;
} while (i < 10);
while (i < 10) {
i += 2;
}
用于枚举对象的属性。
for (var propName in window) {
document.write(propName);
}
label 语句在代码中添加标签以便将来使用
start: for (var i=0; i < count; i++) {
alert(i);
}
break 语句退出循环之后执行循环体后的语句,continue 语句退出循环之后继续从循环体顶部执行。
也可以在语句后添加标签来退出指定的循环体。
outermost:
for (var i=0; i < 10; i++) {
for (var j=0; j < 10; j++) {
if (i == 5 && j == 5) {
continue outermost;
}
}
}
with 语句将代码的作用域设置到一个特定的对象中,以下的代码都将在 location 对象下执行。
with(location) {
var qs = search.substring(1);
var hostname = hostname;
var url = href;
}
switch (i) {
case 25:
alert("25");
break;
default:
alert("Other);
}
ES6 支持块级作用域,不再需要立即执行匿名函数了。
const 用来声明常量,一旦声明,其值就不能改变。const 同样不可以重复声明,只在块级作用域内有效,存在暂时性死区。
const 声明的常量只在当前代码块有效,如果想设置跨模块常量可以采用下面的写法。
export const A = 1;
let 命令、const 命令和 class 命令声明的全局变量不属于全局对象的属性。
ES6 允许通过模式匹配的方式为变量赋值,只要等号两边的模式相同,左边的变量就会被赋予对应的值。
var [a, b, c] = [1, 2, 3];
//不完全解构的情况依然可以成功
let [x, y] = [1, 2, 3];
x // 1
y // 2
解构赋值允许指定默认值
var [foo = true] = [];
foo // true
对象的解构赋值与数组的不同点在于对象的属性没有顺序,变量必须与属性同名才能够正确赋值。
var { bar, foo } = { foo: "aaa", bar: "bbb" };
如果变量名与属性名不同,那么必须采用如下形式
var { foo: baz } = { foo: "aaa", bar: "bbb" };
字符串也可以解构赋值,此时的字符串被转换成了一个类似数组的对象。另外类似数组的对象都有 length 属性,因此也可以对这个属性解构赋值。
解构赋值时如果等号右边是数值或者布尔值,则会先转为对象。
function add([x, y]){
return x + y;
}
上述代码中函数的参数是模式经过解构得到的变量 x 和 y。
export 可以放在任何变量、函数或者类声明的前面,将变量导出到全局环境。export 后面加上 default 关键字可以导出默认值。
import 可以导入指定文件的指定变量,如果不指定使用大括号包裹则导入默认值。
// 导出变量
export var color = "red";
// 导出默认值
export default funciton (num1, num2) {
return num1 + num2;
}
// 导入指定变量
import { identifier1, identifier2 } from "./example.js"
// 导入默认值
import sum from "./example.js";
// 导入时重命名
import { default as sum, color} from "./example.js";
import sum, { color} from "./example.js";