javascript表達(dá)式和運(yùn)算符詳解
一、js表達(dá)式
定義:表達(dá)式是指能計(jì)算出值得任何可用程序單元。 ——wiki
表達(dá)式是js一種短語,可是js解釋器用來產(chǎn)生一個(gè)值。 ——js《權(quán)威指南》
1.原始表達(dá)式。
常量/直接量: 3.14/ "test" 等
關(guān)鍵字: null,this,true,false 等
變量: i,k,j 等
復(fù)合表達(dá)式:原始表達(dá)式和原始表達(dá)式之間用運(yùn)算符連接可以組成一個(gè)復(fù)合表達(dá)式。
例如: 10 * 20 這就是一個(gè)復(fù)合表達(dá)式
2.(數(shù)組、對(duì)象的)初始化表達(dá)式。
例如:
[1,2] 等價(jià)于 new Array(1,2);
[1,,,2] 等價(jià)于 new Array(1,undefined,undefined,2);
{x:1,y:2} 等價(jià)于 var obj = new Object();
obj.x = 1;obj.y = 2;
3.函數(shù)表達(dá)式。
var fn = function(){};
或者:
(function(){ console.log("hello") })();
如果你不理解函數(shù)表達(dá)式后面還會(huì)有對(duì)應(yīng)的介紹。
4.屬性訪問表達(dá)式。
var obj = {x:1}
我們可以通過 obj.x 或者 obj["x"]來訪問它的屬性,這一類表達(dá)式就稱之為屬性訪問表達(dá)式。
5.調(diào)用表達(dá)式。
func(); 來調(diào)用一個(gè)函數(shù),這樣的表達(dá)式就稱之為調(diào)用表達(dá)式。
6.對(duì)象創(chuàng)建表達(dá)式。
例如:
new Func(1,2);我們可以傳參,如果沒有參數(shù)我們也可以new Object;創(chuàng)建一個(gè)空的對(duì)象這樣也是合法的。
二、js運(yùn)算符(一般用于表達(dá)式之間進(jìn)行一些運(yùn)算)。
1.按照運(yùn)算符的操作數(shù)的數(shù)量:
一元運(yùn)算符: +num
二元運(yùn)算符: a + b
三元運(yùn)算符: c?a:b
2.按照功能區(qū)分:
賦值:x += 1 (或者-=,=等)
比較:a == b
算數(shù):a - b
位: a | b
邏輯: exp1 && exp2 (或與非)
字符串:“a” + “b”
特殊: delete obj.x
下面我們對(duì)特殊運(yùn)算符展開來講:
條件運(yùn)算符:var c = true?1:2 //c=1
逗號(hào)運(yùn)算符:var val = (1,2,3) // val = 3 從左到右依次計(jì)算,取最后的
delete運(yùn)算符:就是刪除對(duì)象上的屬性。
--例如:
var obj = {x:1} obj.x //1 delete obj.x obj.x //undefined
從IE9開始,我們可以給對(duì)象設(shè)置configurable標(biāo)簽,當(dāng)configurable:true時(shí)屬性才可以被delete掉
例:
var obj = {} Object.defineProperty(obj, 'x', { configurable:false, value:1 }); delete obj.x obj.x //1
3. in 運(yùn)算符。
例:window.x = 1;那我們想知道window到底有沒有x呢,我們就可以用 in
”x“ in window; // true
4. instanceof 和 typeof 我們?cè)谏弦徽略敿?xì)的介紹過,如果忘記了可以去看一下。
5. new運(yùn)算符
比如說我們創(chuàng)建一個(gè)函數(shù)構(gòu)造器:function Foo(){}
Foo.prototype.x = 1;
我們可以用new運(yùn)算符就可以創(chuàng)建一個(gè)對(duì)象obj
var obj = new Foo();
這樣obj.x; //1 我們就可以從它的構(gòu)造器上的prototype屬性上拿到 1
我們可以通過 obj.hasOwnProperty("x"); //false 來判斷這個(gè)屬性到底是對(duì)象上的還是對(duì)象的原型上的
obj._proto_拿到它的原型,obj._proto_.hasOwnProperty("x"); //true 說明是原型上的
6.this 運(yùn)算符。
this; //window(瀏覽器) var obj = { func:function(){ return this; } } obj.func(); // obj
this運(yùn)算符也是比較特殊的這個(gè)我們后面會(huì)詳細(xì)講。
7.void運(yùn)算符。
void 0 //undefined void (0) //undefined
void無論后面的操作數(shù)是多少,返回的都是undefined。
8.運(yùn)算符的優(yōu)先級(jí),也是建議大家去看一下,更有助于大家讀懂復(fù)雜的表達(dá)式。
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
JavaScript設(shè)計(jì)模式發(fā)布訂閱模式
這篇文章主要介紹了JavaScript設(shè)計(jì)模式發(fā)布訂閱模式,發(fā)布訂閱設(shè)計(jì)模式是和觀察者設(shè)計(jì)模式基本上相同,但是他們兩個(gè)設(shè)計(jì)模式不同的是發(fā)布訂閱者擁有一個(gè)事件處理中心而觀察者并沒有2022-06-06js實(shí)現(xiàn)addClass,removeClass,hasClass的函數(shù)代碼
js實(shí)現(xiàn)addClass,removeClass,hasClass的函數(shù)代碼,需要的朋友可以參考下。2011-07-07JS實(shí)現(xiàn)求出一個(gè)字符串中最多出現(xiàn)的字符和個(gè)數(shù)
這篇文章主要為大家介紹了字符串中最多的重復(fù)字符的計(jì)算代碼,需要的朋友可以參考下2007-07-07JavaScript導(dǎo)航腳本判斷當(dāng)前導(dǎo)航
這篇文章主要介紹了JavaScript導(dǎo)航腳本判斷當(dāng)前導(dǎo)航的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07JavaScript實(shí)現(xiàn)谷歌瀏覽器插件開發(fā)的方法詳解
對(duì)于瀏覽器插件相信大家都不陌生,誰的瀏覽器不裝幾個(gè)好用的插件呢,更是有油猴這個(gè)強(qiáng)大的神器。所以本文就來用JavaScript開發(fā)一個(gè)谷歌瀏覽器插件,感興趣的小伙伴可以了解一下2022-11-11