javascript的表達式指的是什么

這篇文章主要講解了“javascript的表達式指的是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“javascript的表達式指的是什么”吧!

成都創新互聯業務包括:成品網站、企業產品展示型網站建設、高端網站設計、電子商務型網站建設、外貿網站建設(多語言)、商城開發、按需求定制網站、全網營銷推廣等。效率優先,品質保證,用心服務是我們的核心價值觀,我們將繼續以良好的信譽為基礎,秉承穩固與發展、求實與創新的精神,為客戶提供更全面、更優質的互聯網服務!

表達式語句實際上就是一個表達式,它是由運算符連接變量或者直接量構成。 一般來說,表達式語句要么是函數調用,要么是賦值,要么是自增、自減,否則表達式計算的結果沒有任何意義。

本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

表達式語句實際上就是一個表達式,它是由運算符連接變量或者直接量構成。

一般來說,表達式語句要么是函數調用,要么是賦值,要么是自增、自減,否則表達式計算的結果沒有任何意義。

JavaScript 語法上并沒有這樣的限制,任何合法的表達式都可以當做表達式語句使用。

a + b;

這行代碼計算了 a 和 b 相加的值,但是不會顯示出來,也不會產生任何執行效果(除非 a 和 b 是 getter ),但是不妨礙它符合語法也能夠被執行。

PrimaryExpression 主要表達式

表達式的原子項:Primary Expression。它是表達式的最小單位,它所涉及的語法結構也是優先級最高的。

Primary Expression 包含了各種“直接量”,直接量就是直接用某種語法寫出來的具有特定類型的值,直接量就是在代碼中把它們寫出來的語法。

JavaScript 能夠直接量的形式定義對象,針對函數、類、數組、正則表達式等特殊對象類型,JavaScript 提供了語法層面的支持。

({});
(function(){});
(class{ });
[];
/abc/g;

在語法層面,function、{ 和 class 開頭的表達式語句與聲明語句有語法沖突,如果要想使用這樣的表達式,必須加上括號來回避語法沖突。

Primary Expression 還可以是 this 或者變量,在語法上,把變量稱作“標識符引用”。

this;
myVarFun;

任何表達式加上圓括號,都被認為是 Primary Expression,這個機制使得圓括號成為改變運算優先順序的手段。

(a + b);

MemberExpression 成員表達式

Member Expression 通常是用于訪問對象成員的。它有幾種形式:

a.b;
a["b"];
new.target;
super.b;

new.target 是個新加入的語法,用于判斷函數是否是被 new 調用,super 則是構造函數中,用于訪問父類的屬性的語法。

Member Expression 最初設計是為了屬性訪問的,不過從語法結構需要,以下兩種在 JavaScript 標準中當做 Member Expression:

帶函數的模板,這個帶函數名的模板表示把模板的各個部分算好后傳遞給一個函數。

f`a${b}c`;

帶參數列表的 new 運算,不帶參數列表的 new 運算優先級更低,不屬于 Member Expression。

new Cls();

它們跟屬性運算屬于同一優先級,但是沒有任何語義上的關聯。

NewExpression NEW 表達式

Member Expression 加上 new 就是New Expression(不加 new 也可以構成 New Expression,JavaScript 中默認獨立的高優先級表達式都可以構成低優先級表達式)。

New Expression 特指沒有參數列表的表達式。如下代碼:

new new Cls(1);

直觀看上去,它可能有兩種意思:

new (new Cls(1));
new (new Cls)(1);

實際上,它等價于第一種。用代碼來驗證:

class Cls{
  constructor(n){
     console.log("cls", n);
        return class {
           constructor(n) {
              console.log("returned", n);
            }
        }
    }
}

new (new Cls(1));

運行結果:這里就說明了,1 被當做調用 Cls 時的參數傳入了。

javascript的表達式指的是什么

CallExpression 函數調用表達式

Member Expression 還能構成 Call Expression。它的基本形式是 Member Expression 后加一個括號里的參數列表,或者可以用上 super 關鍵字代替 Member Expression。

a.b(c);
super();

這看起來很簡單,但是它有一些變體。比如:

a.b(c)(d)(e);
a.b(c)[3];
a.b(c).d;
a.b(c)`xyz`;

這些變體的形態,跟 Member Expression 幾乎是一一對應的。實際上,可以理解為,Member Expression 中的某一子結構具有函數調用,那么整個表達式就成為了一個 Call Expression。而 Call Expression 就失去了比 New Expression 優先級高的特性,這是一個主要的區分。

LeftHandSideExpression 左值表達式

New Expression 和 Call Expression 統稱 LeftHandSideExpression,左值表達式。

左值表達式就是可以放到等號左邊的表達式。JavaScript 語法則是:

a() = b;

這樣的用法其實是符合語法的,只是,原生的 JavaScript 函數,返回的值都不能被賦值。因此多數時候,我們看到的賦值將會是 Call Expression 的其它形式,如:

a().c = b;

根據 JavaScript 運行時的設計,不排除某些宿主會提供返回引用類型的函數,這時候,賦值就是有效的了。

左值表達式最經典的用法是用于構成賦值表達式,但是其實如果翻一翻 JavaScript 標準,就會發現它出現在各種場合,凡是需要“可以被修改的變量”的位置,都能見到它的身影。

AssignmentExpression 賦值表達式

AssignmentExpression 賦值表達式也有多種形態,最基本的當然是使用等號賦值:

a = b

等號是可以嵌套的:

a = b = c = d

連續賦值,是右結合的,它等價于下面這種:

a = (b = (c = d))

先把 d 的結果賦值給 c,再把整個表達式的結果賦值給 b,再賦值給 a。

賦值表達式的使用,還可以結合一些運算符,例如:

a += b;

相當于:

a = a + b;

能有這樣用的運算符有下面這幾種:

*=、/=、%=、+=、-=、<<=、>>=、>>>=、&=、^=、|=、**=

賦值表達式的等號左邊和右邊能用的表達式類型不一樣。

Expression 表達式

賦值表達式可以構成 Expression 表達式的一部分。在 JavaScript 中,表達式就是用逗號運算符連接的賦值表達式。

在 JavaScript 中,比賦值運算優先級更低的就是逗號運算符了。可以把逗號可以理解為一種小型的分號。

a = b, b = 1, null;

逗號分隔的表達式會順次執行,就像不同的表達式語句一樣。“整個表達式的結果”就是“最后一個逗號后的表達式結果”。比如之前的例子,整個“a = b, b = 1, null;”表達式的結果就是“,”后面的null。

在很多場合,都不允許使用帶逗號的表達式,比如我export 后只能跟賦值表達式,意思就是表達式中不能含有逗號。

感謝各位的閱讀,以上就是“javascript的表達式指的是什么”的內容了,經過本文的學習后,相信大家對javascript的表達式指的是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!

名稱欄目:javascript的表達式指的是什么
本文來源:http://m.kartarina.com/article28/jeddjp.html

成都網站建設公司_創新互聯,為您提供響應式網站面包屑導航ChatGPT小程序開發企業網站制作商城網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
主站蜘蛛池模板: 无码人妻精品一区二区三区蜜桃| 无码精品日韩中文字幕| 在人线av无码免费高潮喷水| 精品视频无码一区二区三区| 亚洲成a人无码亚洲成www牛牛| 国模无码视频一区二区三区| 亚洲爆乳无码专区| 中字无码av电影在线观看网站| 国产av激情无码久久| 久久无码中文字幕东京热| 人妻少妇AV无码一区二区| 制服在线无码专区| 日韩精品无码一区二区三区AV| 久久久久久无码Av成人影院| 国产99久久九九精品无码| 人妻无码视频一区二区三区| 一本久道中文无码字幕av| 亚洲中文字幕久久精品无码2021| 内射人妻少妇无码一本一道| 亚洲αⅴ无码乱码在线观看性色| 国产品无码一区二区三区在线蜜桃| 无遮掩无码h成人av动漫| 久久精品九九热无码免贵| 人妻丰满熟妇aⅴ无码| 无码欧精品亚洲日韩一区夜夜嗨 | 亚洲精品无码99在线观看| 中文字幕无码精品亚洲资源网久久 | 国产成年无码久久久久下载| 久久午夜夜伦鲁鲁片无码免费| 精品人妻无码专区中文字幕| 亚洲av中文无码| 无码办公室丝袜OL中文字幕| 亚洲中文字幕无码mv| 91嫩草国产在线无码观看| 久久久久成人精品无码中文字幕 | 日韩精品无码人成视频手机 | 国产精品无码无卡无需播放器| 青青爽无码视频在线观看| 性虎精品无码AV导航| 成人免费a级毛片无码网站入口| 亚洲精品无码中文久久字幕|