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