-
- 使用
new操作符后跟Object构造函数 - 使用对象字面量表示法
- 之后是一个冒号
- 后面是一个逗号
- 在最后一个属性后面添加逗号,会在IE7及更早版本和Opera中导致错误。
- 数值属性名会自动转换为字符串
- 如果留空其花括号,则可以定义只包含默认属性和方法的对象
- 对象字面量也是向函数传递大量可选参数的首选方式
-
-
- 基本类型值在内存中占据固定大小的空间,因此被保存在栈内存中
-
引用类型的值是对象,保存在堆内存中;
-
-
- 执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为
- 变量对象(variable object),环境中定义的所有变量和函数都保存在这个对象
- 每个执行环境都有,但是我们写代码的时候不能访问
- 全局执行环境是最外围的一个执行环境
- 在Web浏览器中,全局执行环境被认为是
window对象 - 每个函数都有自己的执行环境。当执行流进入一个函数时,函数的环境就会被推入一个环境栈中
- 对
with语句来说,会将指定的对象添加到作用域链中 - 对
catch语句来说,会创建一个新的变量对象,其中包含的是被抛出的错误对象的声明
-
-
- 不能给基本类型的值添加属性
- 如果从一个变量向另一个变量复制基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上
- 访问变量有按值和按引用两种方式,而参数只能按值传递。
- 但在检测引用类型的值时,这个操作符的用处不大
- 检测基本数据类型时
typeof是非常得力的助手 - ECMA-262规定任何在内部实现
[[Call]]方法的对象都应该在应用typeof操作符时返回"function" - 在IE和Firefox中,对正则表达式应用
typeof会返回"object"。
-
-
- 推荐的做法是要么让函数始终都返回一个值,要么永远都不要返回值
- 严格模式对函数有一些限制:
- ECMAScript函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型
- 命名的参数只提供便利,但不是必需的
- 它的值永远与对应命名参数的值保持同步
- 也就是说通过arguments去修改形参是生效并且同步的
- 这并不是说读取这两个值会访问相同的内存空间;它们的内存空间是独立的,但它们的值会同步。
-
arguments对象的长度是由传入的参数个数决定 - ECMAScript函数不能像传统意义上那样实现重载
- 通过检查传入函数中参数的类型和数量并作出不同的反应,可以模仿方法的重载。
-
-
- 最佳实践是始终使用代码块
- 最常用于循环体中的代码至少要被执行一次的情形
- ECMAScript对象的属性没有顺序。因此,通过
for-in循环输出的属性名的顺序是不可预测的 - 建议在使用
for-in循环之前,先检测确认该对象的值不是null或undefined - 使用
label语句可以在代码中添加标签,以便将来使用- 比较少用
-
break和continue语句都可以与label语句联合使用,从而返回代码中特定的位置。 - 如果使用过度,也会给调试带来麻烦。
- 主要是为了简化多次编写同一个对象的工作
- 在
with语句的代码块内部,每个变量首先被认为是一个局部变量,而如果在局部环境中找不到该变量的定义,就会查询location对象中是否有同名的属性。如果发现了同名属性,则以location对象属性的值作为变量的值。 - 严格模式下不允许使用
with语句,否则将视为语法错误 - 大量使用
with语句会导致性能下降,同时也会给调试代码造成困难,因此在开发大型应用程序时,不建议使用with语句 - 假如确实需要混合几种情形,不要忘了在代码中添加注释,说明你是有意省略了
break关键字 -
switch语句中使用任何数据类型 - 每个case的值不一定是常量,可以是变量,甚至是表达式
-
switch语句在比较值时使用的是全等操作符,因此不会发生类型转换
-
2016年10月10日星期一
Google Blog 10/10/2016 (p.m.)
订阅:
博文评论 (Atom)
没有评论:
发表评论