Js整理備忘(02)——運算符

1、運算符的表示以及優先級

Javascript(以下簡寫為Js)的大部分運算符與C或Java是類似的。

記得剛學C語言時老師講的優先級口訣,非常好記:“括、單、算、移、關”“位、邏、條、賦、逗”,此處也可以套用一下,便于記憶。

(1)標點符號表示,比較普遍,略。

(2)用關鍵字表示,和一般的運算符一樣,都是正則運算符,只是更具有可讀性,此處詳細列出幾個。

delete:用于刪除指定的對象的屬性、數組元素或變量;結合性:R;運算數類型:lvalue

typeof:用于返回數據類型;結合性:R;運算數類型:任意

void:用于返回未定義的值;結合性:R;運算數類型:任意

以上三個屬于一元運算符,也叫單目運算符(即口訣中的“單”),運算數只有一個

instenceof:用于檢查對象類型;結合性:L;運算數類型:對象,構造函數

in:用于檢查對象的某個屬性是否存在;結合性:L;運算數類型:字符串(屬性名),對象

以上兩個屬于關系運算符(即口訣中的“關”)

注意:

lvalue:上面提到運算符delete的運算數類型是lvalue,lvalue指的是能夠合法出現在一個賦值表達式左邊的表達式。Js中變量、對象的屬性、數組的元素都是lvalue型的

結合性(associativity):一元運算符、賦值運算符、三元條件運算符結合性是R,從右到左進行運算。

?

2、部分運算符的使用說明

如果運算數非數字,則運算前都會先嘗試將其自動轉換為數字,這是算術運算過程中的通用特性。

(1)除法運算符(/)

Js中所有數字都是浮點型,這一點跟區分整數和浮點數的程序語言不同,如5/2結果是2.5,而不是2

除數為0的結果是正無窮大(Infinity)或者負無窮大(-Infinity),而0/0結果則是特殊值NaN

(2)模運算符(%)

取模運算通常都是整數,但Js中也適用于浮點數,如-4.3%2.1=-0.1

(3)=、==和===

為了區別,可將“=”讀作“得到或賦予”;“==”讀作“等于”;“===”讀作“完全等同”。

==與===用于比較兩個運算數是否相等

相同點:

Js中,數字、字符串、布爾值使用的都是值(value)比較,值相等則相等或等同。

比較對象、數組、函數時使用引用(reference),若兩個變量引用同一個對象,則兩變量才相等。也就是說兩個數組無論如何也不會相等,即使他們存放的元素完全相同。

NaN不與任何一個值(包括NaN本身)相等或等同,檢測一個值是否是NaN,可用全局函數isNaN()。

不同點:

===

==

類型不同,則不等同(!==)類型不同,仍然可能相等
?? 如一個是null,一個是undefined,則兩者相等
?? 若兩者轉換后的值(value)相等,則返回true
?? 若一個是對象,另一個是數字或者字符串,則會先將對象轉換為原始類型的值。Js核心語言內部通常先嘗試valueof()轉換,再嘗試toString()轉換;但是對于Date類,則先執行toString()轉換。

(4)比較運算符

比較運算符只能在數字或字符串上執行,所以不是數字或字符串的運算數將會先轉換成數字或字符串。

當字符串與數字比較時,先轉換成數字,再執行數字比較。

(5)in 運算符

二元運算符,要求左邊運算數是一個字符串,或可以轉化為字符串,右邊運算數是一個對象或數組。

如果左邊字符串是右邊對象的一個屬性名,則返回true

(6)instenceof 運算符

二元運算符,要求左邊運算數是一個對象,右邊運算數是對象類的對象名。

如果左邊的對象是右邊對象名的一個實例,則返回true

(7)邏輯&&、||、!

常用于執行布爾代數,另外

“||” 也可以這么使用:var max=width||height||500;這一用法通常是選取一組備選值中第一個定義并且非空的值。

“!”對任何值x應用兩次都可以將該值轉換為一個布爾值。

(8)typeof 運算符

一元運算符,返回運算數的類型

若運算數是數字、字符串或布爾值,返回“number”、“string”或“boolean”

若運算數是對象、數組或null,返回“object”(運算數是Number、String或Boolean這樣的包裝對象時,也返回“object”)

若運算數是函數,返回“function”

若運算數是未定義的,返回“undefined”。

由此可見,typeof不能區別兩種不同的對象類型,若要區別,須使用其他方法,如使用 instenceof 運算符或 constructor 屬性(Object.constructor后面介紹)。

(9)delete 運算符

一元運算符,刪除指定的對象的屬性、數組元素或變量;刪除成功則返回true,刪除失敗返回false。

一些例子:

<script type="text/javascript">n = 123;var p = { x: 1, y: 2 };document.write(delete n);   //truedocument.write(delete p.x); //true,刪除對象p的屬性xdocument.write(typeof p.x); //undefined,屬性x已經被刪除,不再存在document.write(delete p);   //false,var語句聲明的變量不能被刪除document.write(delete o);   //true, o不存在document.write(delete "a"); //true, ECMAScript標準規定,若delete的運算數不是屬性、數組、或變量時,返回true
</script>

注意:delete影響的只是屬性值,并不影響被這些屬性引用的對象。

var o = new Object();
o.e1 = new Date();      //屬性e1是對對象Date()的引用
o.e2 = o.e1;            //屬性e2也是對Date()的引用
delete o.e1;            //只刪除o的屬性e1,對Date()對象沒有任何影響。
document.write(o.e2);   //e2屬性此時仍然引用Date()對象

?

(10)數組和對象的存取運算符——“[]”和“.”

“.”要求左邊運算數是一個對象,右邊運算數是一個標識符(即對象的屬性名或方法的直接量名)。若該對象中沒有指定的屬性,則返回undefined

“[]”用于存取數組元素,也可用于存取對象的屬性。

注意:當“[]”用于關聯數組時,由于屬性名動態生成,所以不能使用運算符“.”,只能使用“[]”。

例如在使用for/in遍歷對象屬性時,for(f in o){ document.write(o[f]);} ,不能使用o.f,此處f只是變量而不是o的標識符。

轉載于:https://www.cnblogs.com/gppblog/archive/2010/01/11/1644123.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276234.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276234.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276234.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

手寫一個合格的前端腳手架

為什么我們需要一套腳手架為什么我們需要一套腳手架&#xff0c;它能幫助我們解決哪些痛點問題。?前端項目配置越來越繁瑣、耗時&#xff0c;重復無意義的工作?項目結構不統一、不規范?前端項目類型繁多&#xff0c;不同項目不同配置&#xff0c;管理成本高?腳手架也可以是…

第一篇cnblog!

本人才疏學淺&#xff0c;終于通過了cnblog的審核&#xff0c;興奮之余&#xff0c;發表感言——不容易啊&#xff01;在我的博聞里面&#xff0c;隨筆類當然就是技術類的比較多的&#xff0c;特別是實例類的。理論類的大部分放在文章板塊&#xff0c;本人e文特別好(哈哈&#…

解決error 1045: Access denied for user: 'root@localhost' (Using password: YES)

轉載連接&#xff1a;http://jianfw2009.blog.163.com/blog/static/13431366020111016112459158/ 1、先停止mysql服務2、在mysql的目錄下找到my.ini&#xff0c;在[mysqld]后面加上skip-grant-tables3、啟動mysql服務,打開Command Line Client以空密碼登錄4、退出mysql,并停止服…

fillcolor是什么意思_fill是什么意思

1. (使)裝滿;(使)注滿;(使)充滿If you fill a container or area, or if it fills, an amount of something enters it that is enough to make it full.e.g.Fill a saucepan with water and bring to a slow boil...往平底鍋里加滿水,小火煮沸。e.g.She made sandwiches, fill…

利用JMeter進行壓力測試(1)(轉)

轉自&#xff1a;http://www.cnblogs.com/game-over/archive/2010/01/08/1642685.html壓力測試以軟件響應速度為測試目標&#xff0c;尤其是在較短時間內大量并發用戶的同時訪問時&#xff0c;軟件的性能和抗壓能力。 JMeter是一款開源的壓力測試工具&#xff0c;目前最新Rele…

MyISAM InnoDB 區別

轉載鏈接&#xff1a;http://www.php100.com/html/webkaifa/database/Mysql/2011/0326/7789.html MyISAM 和 InnoDB 講解 InnoDB和MyISAM是許多人在使用MySQL時最常用的兩個表類型&#xff0c;這兩個表類型各有優劣&#xff0c;視具體應用而定。基本的差別為&#xff1a;MyISAM…

Git 內部原理圖解——對象、分支以及如何從零開始建倉庫

我們中的許多人每天都在使用 git&#xff0c;但是有多少人知道它的內部是怎么運作的呢&#xff1f;例如我們使用 git commit 時發生了什么&#xff1f;提交&#xff08;commit&#xff09;與提交之間保存的是什么&#xff1f;兩次提交之間難道只是文件的差異&#xff08;dif…

wpsmac和pc版的區別_Mac版WPS Office和微軟Office 2019哪個更好?

眾所周知&#xff0c; macOS系統生態下&#xff0c;有許多界面精美、功能強大、體驗出色的軟件&#xff0c;但提到辦公套件&#xff0c;人們首先想到的還是微軟 Office 套件&#xff0c;其中的Word、 Excel 以及PPT&#xff0c;但用戶體驗并不如意。但現在&#xff0c;蘋果用戶…

A tutorial video for MindManager for free

MindManager 2016 for Windows Essential Training 本人學習的時候使用的是MindManager 2018版本的&#xff0c;和2016版本差異不大。 轉載于:https://www.cnblogs.com/kelamoyujuzhen/p/10253278.html

Google, 請不要離開我們!

雖然我是.net陣營, 力挺Silverlight, 但是我真心希望谷歌留在中國, 如果她能夠靠談判求的言論自由的權利, 那將對中國的擁有自由信仰的一族產生重大的影響. 谷歌離開了中國, 不是她想拋棄中國市場, 而是中國決策者背叛了人性. 在此留下 Google 2010年1月14日的logo, 智慧的幽默…

高級php面試題及部分答案

轉載鏈接&#xff1a;http://www.2cto.com/kf/201304/201112.html 一. 基本知識點 1.1 HTTP協議中幾個狀態碼的含義:503 500 401 403 404 200 301 302。。。 200 : 請求成功&#xff0c;請求的數據隨之返回。 301 : 永久性重定向。 302 : 暫時行重定向。 401 : 當前請求需要用…

iec104點號_IEC104報文流程(有常用類型標識解釋)

參數地址圍類別97版基地址2002版基地址遙信1H------400H1H------4000H遙測701H------900H4001H------5000H遙控B01------B806001H------6100H設點B81H------C00H6201H------6400H電度C01H------C80H6401H------6600H遙測和遙信個數不設置上限&#xff0c;可以沒有上限限制&…

本周ASP.NET英文技術文章推薦[04/08 - 04/14](附贈自彈超級瑪麗主題曲)

摘要 本期共有6篇文章&#xff1a; ASP.NET編譯問題的公開Hotfix補丁 期待下個版本AjaxPro 的發布 在ASP.NET 2.0中使用MultiView控件實現多頁面表單 數據綁定的技巧&#xff1a;嵌套Eval語句 在ASP.NET 2.0中訪問并更新數據&#xff1a;使用數據源控件以編程方式訪問數據 AD…

一個離開某門戶網站人員自爆黑幕

去年&#xff0c;我已在星星發表了一個關于免費發短信的各類軟件的黑幕所在。而事實上的SMS&#xff08;即短信&#xff09;的黑幕遠不止于此&#xff0c;今天&#xff0c;我終于有空坐下來&#xff0c;把其中的一些讓你感覺平常卻實際觸目驚心的事情告訴你們&#xff0c;讓你們…

28歲自學3年前端成功轉行的勵志故事

為什么轉行因為混得不好。在成為程序員之前&#xff0c;我干過很多工作。由于學歷的問題&#xff08;高中&#xff09;&#xff0c;我的工作基本上都是體力活。包括但不限于&#xff1a;工廠普工、銷售&#xff08;沒有干銷售的才能&#xff09;、搬運工、擺地攤等&#xff0c;…

css中!important的作用

轉載鏈接&#xff1a;http://www.cnblogs.com/guoguo-15/archive/2011/08/24/2151859.html css中!important的作用 {*rule !important}這個css規則當今在網頁制作的時候的普及已經非常流行了&#xff0c;以前我對它的理解就停留在‘瀏覽器是否識別階段’ 而沒有真正去研究過&am…

word2vec應用場景_word2vec的使用參數解釋和應用場景

" > corpus.txt因為這些數據雖然去除了其他標簽的數據&#xff0c;但是卻把保留下來了&#xff0c;所以后來作者在分詞程序中去除了這個標簽我在這個[網頁](http://www.jb51.net/article/65497.htm)上找到了一個python去標簽的簡單代碼。但是沒有實驗過&#xff0c;不知…

usb 驅動

usb 驅動學習總結&#xff1a; usb 采用分層的拓撲結構&#xff0c;金字塔型&#xff0c;最多是7層。usb 是主從結構&#xff0c;主和主或者從和從之間不能交換數據。理論上一個usb主控制器最多可接127個設備&#xff0c;協議規定每個usb設備具有一個7bit的地址&#xff0c;范圍…

讓Spring架構減化事務配置(轉)

讓Spring架構減化事務配置(轉) 注&#xff1a;原文章曾發表在it168Spring顛覆了以前的編程模式&#xff0c;引入了IOC等全新的概念&#xff0c;廣受大家的喜愛。目前大多數j2ee項目都已經采用Spring框架。Spring最大的問題是太多的配置文件&#xff0c;使得你不僅需要維護程序代…

面試字節跳動后的2點總結,建議收藏!

首先我來辟個謠&#xff1a;隨便打開一個招聘網站&#xff0c;你會發現前端工程師的崗位需求依舊龐大&#xff0c;大廠人才奇缺&#xff0c;就業薪資起點高&#xff0c;無行業限制。&#xff08;數據來源&#xff1a;職友集&#xff09;前端開發的行業大環境行業升級&#xff0…