国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript運(yùn)算符語法全面概述

2019-11-20 09:29:21
字體:
供稿:網(wǎng)友

前面的話

javascript中的運(yùn)算符大多由標(biāo)點(diǎn)符號表示,少數(shù)由關(guān)鍵字表示,它們的語法言簡意賅,它們的數(shù)量卻著實(shí)不少。運(yùn)算符始終都遵循著一些固定語法,只有了解并掌握這些內(nèi)容,才能正確使用運(yùn)算符。本文將主要介紹javascript運(yùn)算符的語法概述

操作數(shù)個(gè)數(shù)  

javascript的運(yùn)算符總共有46個(gè),如果根據(jù)其操作數(shù)的個(gè)數(shù)進(jìn)行分類,則大多數(shù)是二元運(yùn)算符(binary operator),它們的操作數(shù)都是兩個(gè),它們將兩個(gè)表達(dá)式合并成復(fù)雜表達(dá)式

1 + 2;true || false;

javascript中的一元運(yùn)算符(unary operator)將一個(gè)表達(dá)式轉(zhuǎn)換為另一個(gè)稍復(fù)雜的表達(dá)式,主要包括以下9個(gè):

++ -- - + ~ ! delete typeof voida++;typeof true;

javascript只有一個(gè)三元運(yùn)算符(ternary operator),是條件判斷運(yùn)算符?:,它將三個(gè)表達(dá)式合并成一個(gè)表達(dá)式

2>1 ? 2 : 1;

優(yōu)先級  

運(yùn)算符優(yōu)先級控制著運(yùn)算符的執(zhí)行順序,優(yōu)先級高的運(yùn)算符的執(zhí)行總是先于優(yōu)先級運(yùn)算符低的運(yùn)算符

46個(gè)運(yùn)算符總共分為14級的優(yōu)先級,從高到低依次是:

++ -- - + ~ ! delete typeof void * / % + - << >> >>> < <= > >= instanceof in == != === !== & ^ |&&||?:= *= /= %= += -= &= ^= |= <<= >>= >>>=,

由這14級的運(yùn)算符優(yōu)先級等級可以看出:

一元運(yùn)算符  > 算術(shù)運(yùn)算符 > 比較運(yùn)算符 > 邏輯運(yùn)算符 > 三元運(yùn)算符 > 賦值運(yùn)算符 > 逗號運(yùn)算符  

[注意]邏輯取反運(yùn)算符屬于一元運(yùn)算符,其優(yōu)先級最高

例子

!2<1&&4*3+1;

像上面這種情況就比較復(fù)雜,逐步來分解其運(yùn)算順序

先計(jì)算一元運(yùn)算符!,!2;//false

//于是表達(dá)式變?yōu)閒alse < 1 && 4*3 + 1;

計(jì)算算術(shù)運(yùn)算符4*3+1;//13

//于是表達(dá)式變?yōu)閒alse < 1 && 13;

計(jì)算比較運(yùn)算符<,false<1;//true

//于是表達(dá)式變?yōu)?true && 13;//13

可以使用圓括號來強(qiáng)行指定運(yùn)算次序

2+3*5;//17(2+3)*5;//25;

結(jié)合性  

運(yùn)算符具有兩種結(jié)合性,一種是從左向右結(jié)合,記號為L,一種是從右向左結(jié)合,記號為R。結(jié)合性指定了在多個(gè)具有同樣優(yōu)先級的運(yùn)算符表達(dá)式中的運(yùn)算順序

多數(shù)運(yùn)算符都具有從左向右的結(jié)合性,只有一元運(yùn)算符、條件運(yùn)算符和賦值運(yùn)算符具有從右向左的結(jié)合性

w = x + y + z;//等價(jià)于:w = ((x + y)+ z);
w = x = y = z;//等價(jià)于:w = (x = (y = z));
q = a ? b : c ? d : e ? f : g;//等價(jià)于:q = a ? b : (c ? d : (e ? f : g));  

運(yùn)算符的優(yōu)先級和結(jié)合性決定了它們在復(fù)雜表達(dá)式中的運(yùn)算順序,但子表達(dá)式相互有影響時(shí),順序會發(fā)生變化

例子

a = 1;b = a++ + a-- * a++;

先分析該表達(dá)式中,根據(jù)優(yōu)先級的順序,分別運(yùn)算遞增運(yùn)算符、乘法運(yùn)算符、加法運(yùn)算符和賦值運(yùn)算符

先計(jì)算第一個(gè)a++;//結(jié)果為1,a為2

//表達(dá)式變成b = 1 + a-- * a++;

計(jì)算a--;//結(jié)果為2,a為1

//表達(dá)式變成b = 1 + 2 * a++;

計(jì)算第二個(gè)a++;//結(jié)果為1,a為2

//表達(dá)式變成b = 1 + 2 * 1;

所以,最終a = 2; b = 3;

a = 1;b = a++ + a-- * a++;console.log(a,b);//2 3
//類似地a = 1;b = a-- * a++ + a++;console.log(a,b);//2,1

類型

一些運(yùn)算符可以作用于任何數(shù)據(jù)類型,但仍然希望它們的操作數(shù)是指定類型的數(shù)據(jù),并且大多數(shù)運(yùn)算符返回一個(gè)特定類型的值,在下面的運(yùn)算符規(guī)則表中,箭頭前為運(yùn)算符操作數(shù)的類型,箭頭后為運(yùn)算結(jié)果的類型

【左值】

左值(lvalue)是一個(gè)古老的術(shù)語,指表達(dá)式只能出現(xiàn)在運(yùn)算符的左側(cè)

在javascript中,變量、對象屬性和數(shù)組元素都是左值

遞增運(yùn)算符++、遞減運(yùn)算符--和賦值運(yùn)算符的操作數(shù)類型是左值

var a = 3;a++;//33--;//報(bào)錯(cuò)({}).a += '1';//'undefined1''test' -= 'test';//報(bào)錯(cuò)

運(yùn)算符規(guī)則表

運(yùn)算符       操作         類型++        增量         lval->num--        減量         lval->num-         求反         num->num+         轉(zhuǎn)換為數(shù)字      num->num~         按位求反       int->int!         邏輯非        bool->booldelete      刪除屬性       lval->booltypeof      檢測類型       any->strvoid       返回undefined     any->undef******************************************************* / %       乘、除、求余      num,num->num******************************************************+ -        加、減        num,num->num+         字符串連接       str,str->str******************************************************<<        左移位        int,int->int>>        有符號右移位      int,int->int>>>        無符號右移位      int,int->int******************************************************< <= > >=     比較數(shù)字順序      num,num->bool< <= > >=     比較字母表順序     str,str->boolinstanceof    測試對象類      obj,func->boolin        測試屬性       str,obj->bool******************************************************==        判斷相等       any,any->bool!=        判斷不等       any,any->bool===        判斷恒等       any,any->bool!==        判斷非恒等      any,any->bool******************************************************&         按位與        int,int->int******************************************************^         按位異或       int,int->int******************************************************|         按位或        int,int->int******************************************************&&        邏輯與        any,any->any******************************************************||        邏輯或        any,any->any******************************************************?:        條件運(yùn)算符       bool,any,any->any******************************************************=         賦值         lval,any->any*= /= %=+= -= &=     運(yùn)算且賦值       lval,any->any^= |= <<=>>= >>>=******************************************************,         忽略第一個(gè)操作數(shù),    any,any->any         返回第二個(gè)操作數(shù)

以上這篇javascript運(yùn)算符語法全面概述就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌恰县| 恩平市| 和田县| 高雄市| 建湖县| 桓仁| 本溪市| 淳化县| 遂溪县| 遵化市| 游戏| 南江县| 吕梁市| 潮州市| 灵石县| 永川市| 怀仁县| 务川| 北海市| 阿拉尔市| 郯城县| 涟源市| 宾阳县| 肇庆市| 乌拉特中旗| 成都市| 永州市| 太和县| 全州县| 福海县| 庄河市| 九江市| 区。| 珲春市| 柯坪县| 天峨县| 安多县| 于田县| 鹤壁市| 尚义县| 仁寿县|