摘要:原始表達式直接量保留字變量原始表達式表達式的最小單位表達式中的短語,解釋器會將其計算為一個結(jié)果對象和數(shù)據(jù)的初始化表達式對象直接量和數(shù)組直接量,它們和布爾直接量不同,它們不是原始表達式函數(shù)定義表達式函數(shù)直接量也不是原始表達式屬性訪問表達式語法
1 原始表達式
直接量、保留字、變量
原始表達式(primary expression):表達式的最小單位
表達式:JavaScript中的短語,JavaScript解釋器會將其計算為一個結(jié)果
2 對象和數(shù)據(jù)的初始化表達式對象直接量和數(shù)組直接量,它們和布爾直接量不同,它們不是原始表達式
3 函數(shù)定義表達式函數(shù)直接量也不是原始表達式
4 屬性訪問表達式語法:
expression . identifier
expression [ expression ]
調(diào)用表達式(invocation expression):調(diào)用或者執(zhí)行函數(shù)或方法的語法表示
方法調(diào)用(method invocation):如果這個表達式是一個屬性訪問表達式,那么這個調(diào)用稱做“方法調(diào)用”
6 對象創(chuàng)建表達式對象創(chuàng)建表達式(object creation expression):創(chuàng)建一個對象并調(diào)用一個構(gòu)造函數(shù)初始化新對象的屬性:
var obj = new Object(); //比函數(shù)調(diào)用表達式多了一個new操作符 Object();7 運算符概述 7.1 操作數(shù)的個數(shù)
一元運算符(unary operator):將一個表達式轉(zhuǎn)換為另一個復(fù)雜的表達式
二元運算符(binary operator):將兩個表達式合并成一個復(fù)雜的表達式
三元運算符(ternary operator):條件判斷運算符?
7.2 左值左值(lvalue):表達式只能出現(xiàn)在賦值運算符的左側(cè)
7.3 運算符優(yōu)先級要注意的是,屬性訪問表達式和調(diào)用表達式的優(yōu)先級非常高,當(dāng):typeof my.functions[x](y),盡管typeof是優(yōu)先級最高的運算符之一,但typeof也是在兩次屬性訪問和函數(shù)調(diào)用之后執(zhí)行的
8 算數(shù)表達式 8.1 “+”運算符有些時候要進行必要的轉(zhuǎn)換:
var obj = { toString: function() { return "object"; } }; console.log("hello " + obj); //hello object var obj = {}; console.log("hello " + obj); //hello [object Object] console.log(1 + null); //1 console.log(1 + undefined); //NaN8.2 一元算數(shù)運算符
+、-是一元運算符,也是二元運算符
9 關(guān)系表達式 9.1 相等和不等運算符如果兩個引用值指向同一個對象、數(shù)組或函數(shù),則它們是相等的
9.2 比較運算符大寫的ASCⅡ字幕都“小于”小寫的ASCⅡ字幕;
加號運算符和比較運算符的行為不同,前者更偏愛字符串,如果其中一個操作數(shù)是字符串,則進行字符串連接;比較運算符則更偏愛數(shù)字,只有兩個操作數(shù)都是字符串,才會進行字符串比較
當(dāng)其中一個操作數(shù)是或能轉(zhuǎn)成NaN的時候,比較運算符均返回false:
console.log("12" < NaN); //False; console.log("12" > NaN); //False;9.3 in運算符
左操作數(shù)是字符串或能夠轉(zhuǎn)換成字符串,右操作數(shù)則是對象
9.4 instanceof運算符左操作數(shù)是對象,右操作數(shù)是標(biāo)識對象的類
10 邏輯表達式 10.1 邏輯與(&&)建議“&&”僅用來對真值和假值做布爾計算
10.2 邏輯或(||)最常用的方式是從一組備選表達式中選出第一個真值表達式:var body = body || document.body;
function obj(p) { p = p || {}; return p; } console.log(obj().toString()); //[oject Object] console.log(obj({ toString: function() { return "Oli"; } }).toString()); //Oli10.3 邏輯非(!)
“!”運算符首先將其操作數(shù)轉(zhuǎn)換為布爾值,然后再對布爾值求反
11 賦值表達式一次性對多個變量賦值:
var x, y, z; x=y=z=10; console.log(x+y+z); //3012 表達式計算 12.1 eval()
它使用了調(diào)用它的變量作用域環(huán)境
12.2 全局eval()直接調(diào)用eval()時,它總是在調(diào)用它的上下文作用域內(nèi)執(zhí)行。其他的間接調(diào)用則使用全局對象作為其上下文作用域,并且無法讀寫、定義局部變量和函數(shù):
var geval = eval; var x = "global", y = "global"; function f() { var x = "local"; eval("x += "changed""); //直接調(diào)用eval return x; } console.log(f(), x); //localchanged global; function g() { var y = "local"; geval("y += "changed""); //間接調(diào)用eval return y; } console.log(g(), y); //local globalchanged;12.3 嚴(yán)格eval()
ECMAScript5在嚴(yán)格模式下,eval執(zhí)行的代碼段可以查詢或更改局部變量,但不能在局部作用域中定義新的變量或函數(shù);
此外,嚴(yán)格模式將“eval”列為保留字,不能用一個別名覆蓋eval()函數(shù)(運算符)
// "use strict"; function f () { eval("var x = 10"); console.log(x); } f(); //10 "use strict"; function f () { eval("var x = 10"); console.log(x); } f(); //x is not defined13 其他運算符 13.1 條件運算符(?:)
條件運算符中唯一一個三元運算符(三個操作數(shù))
常用做法是:
var username; var name = username ? username : "Oliver"; console.log(name); //"Oliver"13.2 typeof運算符
最常用的做法是:
var value = 123; var value = "hello"; console.log((typeof value === "string") ? """ + value + """ : value); //123 //"hello"
在IE9之前的版本中,非原生可執(zhí)行對象的typeof運算將返回“object”
13.3 delete運算符delete是一元操作符,它用來刪除對象屬性或者數(shù)組元素
13.4 void運算符void讓瀏覽器不必顯示這個表達式的計算結(jié)果:
hello there
以上代碼不推薦,應(yīng)該綁定一個事件處理程序
13.5 逗號運算符(,)最常用于for循環(huán)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/79023.html
摘要:在同一個塊內(nèi),不允許用重復(fù)聲明變量。中為新增了塊級作用域。自帶遍歷器的對象有數(shù)組字符串類數(shù)組對象對象的對象等和結(jié)構(gòu)對象。返回一個遍歷器,使遍歷數(shù)組的鍵值對鍵名鍵值。 目錄 1.語法 2.類型、值和變量 3.表達式和運算符 4.語句 5.數(shù)組 6.對象 7.函數(shù) 8.全局屬性和方法 9.詞法作用域、作用域鏈、閉包 10.原型鏈、繼承機制 11.this的理解 12.ES5新特性 13.E...
摘要:二進制浮點數(shù)和四舍五入錯誤在使用實數(shù)時,常常只是真實值的一個近似表示。作用域分類全局函數(shù),塊級作用域鏈變量對象用于存儲執(zhí)行上下文中的變量函數(shù)聲明函數(shù)參數(shù)變量初始化階段瀏覽器截圖瀏覽器截圖代碼執(zhí)行階段類和模塊 詞法結(jié)構(gòu) 字符集 使用Unicode編寫 ES3 Unicode2.1+ ES5 Unicode3+ 區(qū)分大小寫 注釋 // 注釋 /* 注釋 */ 標(biāo)識符和保留字 必須以字...
摘要:對象數(shù)組初始化表達式,闖關(guān)記之上文檔對象模型是針對和文檔的一個。闖關(guān)記之?dāng)?shù)組數(shù)組是值的有序集合。數(shù)組是動態(tài)的,根闖關(guān)記之語法的語法大量借鑒了及其他類語言如和的語法。 《JavaScript 闖關(guān)記》之 DOM(下) Element 類型 除了 Document 類型之外,Element 類型就要算是 Web 編程中最常用的類型了。Element 類型用于表現(xiàn) XML 或 HTML 元素...
摘要:函數(shù)定義表達式。對象創(chuàng)建表達式。需要注意的是,大多數(shù)運算符都是由標(biāo)點符號表示的,比如和。也就是說,空字符串將被當(dāng)作,布爾值將被當(dāng)作。對于和,則分別調(diào)用函數(shù)并取得字符串和。 表達式 表達式是由數(shù)字、運算符、數(shù)字分組符號(如括號)、自由變量和約束變量等以能求得數(shù)值的有意義排列方法所得的組合。JavaScript 表達式主要有以下幾種形式: 原始表達式:常量、變量、保留字。 對象、數(shù)組初始...
摘要:函數(shù)定義表達式。對象創(chuàng)建表達式。也就是說,空字符串將被當(dāng)作,布爾值將被當(dāng)作。如果有一個操作數(shù)是對象數(shù)值或布爾值,則調(diào)用它們的方法取得相應(yīng)的字符串值,然后再應(yīng)用前面關(guān)于字符串的規(guī)則。對于和,則分別調(diào)用函數(shù)并取得字符串和。 表達式 表達式是由數(shù)字、運算符、數(shù)字分組符號(如括號)、自由變量和約束變量等以能求得數(shù)值的有意義排列方法所得的組合。JavaScript 表達式主要有以下幾種形式: ...
閱讀 2977·2021-10-15 09:41
閱讀 1635·2021-09-22 15:56
閱讀 2110·2021-08-10 09:43
閱讀 3283·2019-08-30 13:56
閱讀 1789·2019-08-30 12:47
閱讀 660·2019-08-30 11:17
閱讀 2777·2019-08-30 11:09
閱讀 2199·2019-08-29 16:19