@demonly
2017-10-14T09:31:23.000000Z
字数 2060
阅读 1080
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 // 1y // 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";