函数
() 运算符调用函数
使用上面的例子,toCelsius 引用的是函数对象,而 toCelsius() 引用的是函数结果。
访问没有 () 的函数将返回函数定义:
function toCelsius(fahrenheit) {
return (5/9) * (fahrenheit-32);
}
console.log(toCelsius);
console.log(toCelsius());
windows 执行结构:
对象
访问属性
访问对象属性,以两种方式访问属性:
//两种访问属性的方法
objectName.propertyName
objectName["propertyName"]
var person = {
firstName:"Bill",
lastName:"Gates",
age:50,
eyeColor:"blue"
};
var key = person.firstName;
console.log('name1:'+person.firstName); // name1:Bill
console.log('name2:'+person['firstName']); // name2:Bill
console.log('name3:'+person[firstName]); // 报错 ReferenceError: firstName is not defined
console.log('name4:'+person[key]); // name4:undefined
请不要把字符串、数值和布尔值声明为对象!
如果通过关键词 “new” 来声明 JavaScript 变量,则该变量会被创建为对象:
var x = new String(); // 把 x 声明为 String 对象
var y = new Number(); // 把 y 声明为 Number 对象
var z = new Boolean(); // 把 z 声明为 Boolean 对象
请避免字符串、数值或逻辑对象。他们会增加代码的复杂性并降低执行速度。
不要把字符串创建为对象。它会拖慢执行速度。
new 关键字使代码复杂化。也可能产生一些意想不到的结果:
当使用 == 相等运算符时,相等字符串是相等的:
var x = "Bill";
var y = new String("Bill");
// (x == y) 为 true,因为 x 和 y 的值相等
当使用 === 运算符时,相等字符串是不相等的,因为 === 运算符需要类型和值同时相等。
var x = "Bill"; // typeof x = string
var y = new String("Bill"); // typeof y = object
// (x === y) 为 false,因为 x 和 y 的类型不同(字符串与对象)