首页 > 代码库 > JavaScript语言精粹 读书笔记(一)

JavaScript语言精粹 读书笔记(一)

  JavaScript中的“严格模式”。
     如果在脚本文件的第一行加入"use strict";  则整个脚本都将以“严格模式”运行。如果语句不在第一行,则无效,整个脚本以“正常模式”运行。PS:只要"use strict"; 不跟在实际运行结果的语句后面,可以不在第一行。
     如果"use strict"; 放在一个函数体的第一行,则整个函数以“严格模式”运行。

     “严格模式”的意义
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的Javascript做好铺垫。

     JavaScript中值被当作为假(false):
          false;
          null;
          空字符串"";
          数字  0;
          数字 NaN;
     其余都被当作真,包括true、字符串"false",以及其他对象。

     for in语句中,应该在每次循环中,object的下一个属性名字符串被赋值给variable
     通常在使用过程中要检测object.hasOwnProperty(variable)来确定这个属性名是该对象的成员,还是来自于原型链。
          for (myvar in obj) {
               if (obj.hasOwnProperty(myvar)) {
                    ...
               }
          }

对象是属性的容器,其中每个属性都拥有名字和值。属性的名字可以是包括空字符串在内的任意字符串。属性值可以是除 undefined 值以外的任何值。
 
JavaScript里的对象是无类型(class-free)的。它对新属性的名字和属性的值没有限制。对象适合用于汇集和管理数据。对象可以包含其他对象,所以它们可以容易地表示成树状或图形结构。
 
JavaScript包含一种原型链的特性,允许对象继承另一个对象的属性。正确地使用它能减少对象初始化时消耗的时间和内存。
 

对象字面量提供了一种非常方便的创建新对象值的表示法。一个对象字面量就是包围在一对花括号中的零或多个“名值”对。对象字面量可以出现在任何允许表达式出现的地方。
 
var empty_object = {};
var stooge = {
     "first-name":"Jerome",
     "last-name":"Howard"
};
 
属性名可以为"first-name",但不能为first-name ,但可以为first_name 。如果属性名是一个合法的JavaScript标识符且不是保留字,则不强求用引号括住属性名。
 
属性值可以嵌套。如:
var flight = {
     airline:"aaaaa",
     departure:{
          IATA:"SYD" 
     }
};
 
获取对象里包含的值,可以用在对象后加[],且方括号中写属性名;如果属性名是一个字符串字面量,而且是个合法的JavaScript标识符且不是保留字,则也可以用 . 表示法表示。优先用 . 表达式。
stooge["first-name"]      //"Jerome"
flight.departure.IATA      //"SYD" 
 
如果检索一个不存在的属性的值,则返回 undefined。
 
可以使用 || 运算符填充默认值。
var middle = stooge["middle-name"] || "(none)";
var status = flight.status || "unknown";
 
如果尝试从 undefined 的成员属性中取值将会导致 TypeError 异常。这时可以通过 && 运算符来避免错误。
flight.equipment                       // undefined
flight.equipment.model             // throw "TypeError"
flight.equipment && flight.equipment.model     // undefined
 
对象里的值可以通过赋值语句赋值,如果对象之前没有拥有那个属性名,那么该属性就被扩充到对象中。
 

对象的传递是通过引用来传递的,它们永远不会被复制。
var x = stooge;
var nick = stooge.nickname;
x.nickname = "Curly";
则 nick 也为"Curly"。

JavaScript语言精粹 读书笔记(一)