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ù)重載 (Part 1 - 設(shè)計(jì))
JavaScript支持函數(shù)重載嗎?可以說不支持,也可以說支持。說不支持,是因?yàn)镴avaScript不能好像其它原生支持函數(shù)重載的語言一樣,直接寫多個(gè)同名函數(shù),讓編譯器來判斷某個(gè)調(diào)用對(duì)應(yīng)的是哪一個(gè)重載。2009-08-08
Javascript動(dòng)態(tài)創(chuàng)建表格及刪除行列的方法
這篇文章主要介紹了Javascript動(dòng)態(tài)創(chuàng)建表格及刪除行列的方法,涉及javascript動(dòng)態(tài)操作表格的相關(guān)技巧,需要的朋友可以參考下2015-05-05
JavaScript之Canvas_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了JavaScript之Canvas,Canvas是HTML5新增的組件,它就像一塊幕布,可以用JavaScript在上面繪制各種圖表、動(dòng)畫等2017-07-07
Avalonjs雙向數(shù)據(jù)綁定與監(jiān)聽的實(shí)例代碼
本文通過實(shí)例代碼給大家介紹了Avalonjs雙向數(shù)據(jù)綁定與監(jiān)聽的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-06-06
利用JavaScript編寫Python內(nèi)置函數(shù)查詢工具
Python有豐富的內(nèi)置函數(shù)實(shí)現(xiàn)各種功能,但查詢內(nèi)置函數(shù)時(shí)總是需要百度查,有沒有一個(gè)小工具可以單機(jī)無網(wǎng)絡(luò)查詢Python內(nèi)置函數(shù),方便自己學(xué)習(xí)編寫Python程序呢?本文就來用JavaScript編寫一個(gè)2023-02-02
JavaScript 中判斷變量是否為數(shù)字的示例代碼
這篇文章主要介紹了JavaScript 中判斷變量是否為數(shù)字的示例代碼,代碼簡(jiǎn)單易懂對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
解決layui動(dòng)態(tài)加載復(fù)選框無法選中的問題
今天小編就為大家分享一篇解決layui動(dòng)態(tài)加載復(fù)選框無法選中的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09

