JavaScript基礎(chǔ)語(yǔ)法之js表達(dá)式
本文將詳細(xì)介紹javascript表達(dá)式,表達(dá)式分為原始表達(dá)式和復(fù)雜表達(dá)式。一般,關(guān)于javascript基礎(chǔ)語(yǔ)法,人們聽(tīng)得比較多的術(shù)語(yǔ)是操作符和語(yǔ)句。但,其實(shí)還有一個(gè)術(shù)語(yǔ)經(jīng)常使用,卻很少被提到,這就是javascript表達(dá)式(expression)。
原始表達(dá)式(primary exression)
原始表達(dá)式是表達(dá)式的最小單位——它不再包含其他表達(dá)式。javascript中的原始表達(dá)式包括this關(guān)鍵字、標(biāo)識(shí)符引用、字面量引用、數(shù)組初始化、對(duì)象初始化和分組表達(dá)式
PrimaryExpression : this Identifier Literal ArrayLiteral ObjectLiteral ( Expression )
this關(guān)鍵字和標(biāo)識(shí)符
this;//返回當(dāng)前對(duì)象
i;//返回變量i的值
sum;//返回變量sum的值
字面量
字面量(literal),又翻譯成直接量,就是程序中直接使用的數(shù)據(jù)值
Literal :: NullLiteral BooleanLiteral NumericLiteral StringLiteral RegularExpressionLiteral null; undefined; true; false; 1; 'abc'; /pattern/;
數(shù)組和對(duì)象初始化
數(shù)組初始化和對(duì)象初始化實(shí)際上是一個(gè)以字面量的方式描述的初始化的過(guò)程。這兩個(gè)初始化表達(dá)式有時(shí)稱做"對(duì)象直接量"和"數(shù)組直接量"
[]; [1,2,3]; {}; {a:1};
分組表達(dá)式
分組表達(dá)式實(shí)際上就是括號(hào),用于重寫(xiě)運(yùn)算符的優(yōu)先級(jí)
復(fù)雜表達(dá)式(MemberExpression)
復(fù)雜表達(dá)式是由原始表達(dá)式和操作符(operator)組合而成,包括屬性訪問(wèn)表達(dá)式、對(duì)象創(chuàng)建表達(dá)式和函數(shù)表達(dá)式
MemberExpression : MemberExpression [ Expression ] MemberExpression . IdentifierName new MemberExpression Arguments FunctionExpression
屬性訪問(wèn)表達(dá)式
屬性訪問(wèn)表達(dá)式運(yùn)算可以得到一個(gè)對(duì)象屬性或一個(gè)數(shù)組元素的值,javascript為屬性訪問(wèn)定義了兩種語(yǔ)法
MemberExpression . IdentifierName MemberExpression [ Expression ]
第一種寫(xiě)法是一個(gè)表達(dá)式后跟隨一個(gè)句點(diǎn)和標(biāo)識(shí)符。表達(dá)式指定對(duì)象,標(biāo)識(shí)符則指定需要訪問(wèn)的屬性的名稱
第二種寫(xiě)法是使用方括號(hào),方括號(hào)內(nèi)是另外一個(gè)表達(dá)式(這種方法適用于對(duì)象和數(shù)組)。第二個(gè)表達(dá)式指定要訪問(wèn)的屬性的名稱或代表要訪問(wèn)數(shù)組元素的索引
var o = {x:1,y:{z:3}}; //對(duì)象字面量 var a = [o,4,[5,6]]; // 包含對(duì)象的數(shù)組字面量 o.x;//表達(dá)式o的x屬性 o.y.z;//表達(dá)式o.y的z屬性 o['x'];//對(duì)象o的x屬性 a[1];//表達(dá)式a中索引為1的元素
不管使用哪種形式的屬性訪問(wèn)表達(dá)式,在'.'和'['之前的表達(dá)式總是會(huì)首先計(jì)算
如果計(jì)算結(jié)果是null或undefined,表達(dá)式會(huì)拋出一個(gè)類型錯(cuò)誤異常,因?yàn)檫@兩個(gè)值都不能包含任意屬性
如果計(jì)算結(jié)果不是對(duì)象,javascript會(huì)將其轉(zhuǎn)換為對(duì)象
如果對(duì)象表達(dá)式后跟隨句點(diǎn)和標(biāo)識(shí)符,則會(huì)查找由這個(gè)標(biāo)識(shí)符指定的屬性值,并將其作為整個(gè)表達(dá)式的值返回
如果對(duì)象表達(dá)式后跟隨一對(duì)方括號(hào),則會(huì)計(jì)算方括號(hào)內(nèi)的表達(dá)式的值并將其轉(zhuǎn)換為字符串
不論哪種情況,如果命名的屬性不存在,那么整個(gè)屬性訪問(wèn)表達(dá)式的值就是undefined
對(duì)象創(chuàng)建表達(dá)式
對(duì)象創(chuàng)建表達(dá)式創(chuàng)建一個(gè)對(duì)象并調(diào)用一個(gè)函數(shù)初始化新對(duì)象的屬性
new Object(); new Point(2,3);
如果一個(gè)對(duì)象創(chuàng)建表達(dá)式不需要傳入任何參數(shù)給構(gòu)造函數(shù)的話,那么這對(duì)空?qǐng)A括號(hào)是可以省略的
new Object;
函數(shù)表達(dá)式
函數(shù)表達(dá)式分為函數(shù)定義表達(dá)式和函數(shù)調(diào)用表達(dá)式
函數(shù)定義表達(dá)式定義一個(gè)javascript函數(shù),表達(dá)式的值是這個(gè)新定義的函數(shù)
一個(gè)典型的函數(shù)定義表達(dá)式包含關(guān)鍵字function,跟隨其后的是一對(duì)圓括號(hào),括號(hào)內(nèi)是一個(gè)以逗號(hào)分割的列表,列表含有0個(gè)或多個(gè)標(biāo)識(shí)符(參數(shù)名),然后再跟隨一個(gè)由花括號(hào)包裹的
javascript代碼段(函數(shù)體)
function square(x){ return x*x; }
函數(shù)定義表達(dá)式同樣可以包含函數(shù)的名字,函數(shù)也可以通過(guò)函數(shù)語(yǔ)句來(lái)定義,而不是函數(shù)表達(dá)式
var square = function(x){return x*x;}
函數(shù)調(diào)用表達(dá)式是一種調(diào)用或執(zhí)行函數(shù)或方法的語(yǔ)法表示。如果這個(gè)表達(dá)式是一個(gè)屬性訪問(wèn)表達(dá)式,那么這個(gè)調(diào)用稱做方法調(diào)用
f(0); Math.max(x,y,z); a.sort();
以上所述是小編給大家介紹的JavaScript基礎(chǔ)語(yǔ)法之js表達(dá)式的相關(guān)內(nèi)容,希望對(duì)大家有所幫助。如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
javascript實(shí)現(xiàn)tab響應(yīng)式切換特效
這篇文章主要為大家介紹了javascript實(shí)現(xiàn)tab響應(yīng)式切換特效,以一個(gè)完整的實(shí)例對(duì)tab響應(yīng)式切換特效進(jìn)行詳細(xì)的分析,感興趣的小伙伴們可以參考一下2016-01-01JS無(wú)限級(jí)導(dǎo)航菜單實(shí)現(xiàn)方法
今天小編就為大家分享一篇關(guān)于JS無(wú)限級(jí)導(dǎo)航菜單實(shí)現(xiàn)方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01正則表達(dá)式中特殊符號(hào)及正則表達(dá)式的幾種方法總結(jié)(replace,test,search)
這篇文章主要是對(duì)正則表達(dá)式中特殊符號(hào)及正則表達(dá)式的幾種方法進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11BootStrap modal模態(tài)彈窗使用小結(jié)
這篇文章主要為大家詳細(xì)介紹了BootStrap modal模態(tài)彈窗使用小結(jié),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10手機(jī)注冊(cè)發(fā)送驗(yàn)證碼倒計(jì)時(shí)的簡(jiǎn)單實(shí)例
下面小編就為大家分享一篇手機(jī)注冊(cè)發(fā)送驗(yàn)證碼倒計(jì)時(shí)的簡(jiǎn)單實(shí)例。具有很好的參考價(jià)值,一起跟隨小編過(guò)來(lái)看看吧,希望對(duì)大家有所幫助2017-11-11淺談javascript中for in 和 for each in的區(qū)別
兩個(gè)的作用都用來(lái)遍歷對(duì)象,但為什么有了for in語(yǔ)句了還要for each in語(yǔ)句呢,后來(lái)看了下for each in開(kāi)發(fā)的文檔,for each in是作為E4X標(biāo)準(zhǔn)的一部分在javascript 1.6中發(fā)布的,而且它不是ECMAScript標(biāo)準(zhǔn)的一部分2015-04-04微信小程序以7天為周期連續(xù)簽到7天功能效果的示例代碼
這篇文章主要介紹了微信小程序以7天為周期連續(xù)簽到7天功能效果的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08JavaScript用select實(shí)現(xiàn)日期控件
這篇文章主要介紹了JavaScript用select實(shí)現(xiàn)日期控件的相關(guān)資料,需要的朋友可以參考下2015-07-07