函數
() 運算符調用函數
使用上面的例子,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 的類型不同(字符串與對象)