JavaScript 運算子Operators - Fooish 程式技術
文章推薦指數: 80 %
算術運算子(Arithmetic Operators); 位元運算子(Bitwise Operators); 邏輯運算子(Logical Operators); 字串運算子(String Operators); 三元運算 ...
JavaScript教學JavaScript如何使用JavaScript語法JavaScript變數JavaScript資料型態JavaScript運算子JavaScript流程控制JavaScriptifelseJavaScriptswitchJavaScriptforJavaScriptwhileJavaScriptlabelJavaScriptFunctionJavaScript例外處理JavaScriptObjectJavaScriptNumberJavaScriptBooleanJavaScriptStringJavaScriptArrayJavaScriptDateJavaScriptMathJavaScriptRegExpJavaScriptJSONJavaScriptBOMJavaScriptwindowJavaScriptscreenJavaScriptlocationJavaScripthistoryJavaScriptnavigatorJavaScriptPopupJavaScriptTimerJavaScriptCookieJavaScriptDOMDOM查找元素DOM節點屬性DOM節點操作DOMHTML屬性DOMCSSDOM事件處理JavaScriptES6介紹ES6BlockScopeletconstES6ArrowFunctionsES6DefaultFunctionParametersES6Spread/RestOperatorES6ObjectLiteralExtensionsES6OctalBinaryLiteralsES6DestructuringES6super關鍵字ES6TemplateLiteralsES6for...of迴圈ES6Map/WeakMap物件ES6Set/WeakSet物件ES6class關鍵字ES6Symbol資料型態ES6Iterables/Iterators迭代器ES6Generator生成器ES6Promise物件JavaScriptAJAXJavaScript物件導向JavaScriptthisJavaScriptIIFEJavaScriptClosureJavaScriptHoistingJavaScript運算子(Operators)JavaScript有以下這幾類運算子,來讓你可以做不同的操作:指定運算子(AssignmentOperators)比較運算子(ComparisonOperators)算術運算子(ArithmeticOperators)位元運算子(BitwiseOperators)邏輯運算子(LogicalOperators)字串運算子(StringOperators)三元運算子(Conditional(ternary)operator)從運算子(operator)和運算元(operand)的關係,JavaScript的運算子,有所謂的一元(unary)運算子、二元(binary)運算子和三元(ternary)運算子。
一個二元運算子,需要有兩個運算元,一個在運算子前面,一個在運算子後面:operand1operatoroperand2
例如1+2
x*y
一個一元運算子,需要有一個運算元,可能是在運算子前面,或是在運算子後面:operatoroperand
//或
operandoperator
例如x++
//或
++x
指定運算子(AssignmentOperators)指定運算子用來指定一個值給一個變數。
運算子例子說明=x=y將y值指定給x變數+=x+=y意思跟x=x+y一樣,將xy相加後的值指定回x變數-=x-=y意思跟x=x-y一樣,將xy相減後的值指定回x變數*=x*=y意思跟x=x*y一樣,將xy相乘後的值指定回x變數/=x/=y意思跟x=x/y一樣,將xy相除後的值指定回x變數%=x%=y意思跟x=x%y一樣,將x除以y的餘數指定回x變數**=x**=y意思跟x=x**y一樣,將x的y次方值指定回x變數<<=x<<=y意思跟x=x<
運算元可以是數值、字串、表達式(expression)或物件等。
對於不同型態的值,JavaScript會嘗試將他們轉型(typeconversion)到同樣型態後,再做比較,通常是先轉到數值型態。
運算子例子說明==3==var1'3'==var1如果兩邊相等就返回true!=var1!=4var2!='3'如果兩邊不相等就返回true===3===var1跟==的差異在於,===不會自動嘗試轉型,型態和值都一樣才會返回true!==var1!=='3'3!=='3'跟!=的差異在於,!==不會自動嘗試轉型,型態或值不一樣都會返回true>var2>var1var1>2如果左邊運算元大於右邊的就返回true>=var2>=var1var1>=3如果左邊運算元大於或等於右邊的就返回true
在真假判斷式中,所有東西都可以轉換為布林值,而除了null,數值0,NaN,空字串''和undefined是false,其他的值都是true。
運算子例子說明&&expr1&&expr2LogicalAND,如果expr1和expr2都是true,就會傳回true,否則傳回false||expr1||expr2LogicalOR,如果expr1或expr2是true,就會傳回true,否則傳回false!!exprLogicalNOT,如果expr是true,就傳回false,否則傳回true但&&和||還有比較特別的地方,如果運算元的值不是布林值,實際上會傳回其中一個運算元的值,看下面例子。
//foo是Dog
varfoo='Cat'&&'Dog';
//foo是false
//因為&&遇到false的運算元,就會直接返回,不會繼續再往下判斷(Short-circuitevaluation)
varfoo=false&&'Cat';
//foo是Cat
//因為||遇到true的運算元,就會直接返回,不會繼續再往下判斷(Short-circuitevaluation)
varfoo='Cat'||'Dog';
//foo是Cat
varfoo=false||'Cat';
三元運算子(Conditional(ternary)operator)condition?val1:val2
如果condition是true,就傳回val1的結果,否則傳回val2的結果。
例如://如果age變數大於等於18,則status就會是adult
//相反的,如果age變數小於18,則status就會是minor
varstatus=(age>=18)?'adult':'minor';
運算子優先權(Operatorprecedence)各種運算子在處理上的優先次序(precedence)是依一般算術規則,先乘除後加減,如果你有一些運算要優先處理,可以放在()小括號裡面,例如:100+50/2=125
(100+50)/2=75
這邊整理出JavaScript各種運算子的優先權,由高至低排列:運算子優先權member.[]call/createinstance()newnegation/increment!~-+++--typeofvoiddeletemultiply/divide*/%addition/subtraction+-bitwiseshift<<>>>>>relational<<=>>=ininstanceofequality==!====!==bitwise-and&bitwise-xor^bitwise-or\logical-and&&logical-or|\conditional?:assignment=+=-=*=/=%=<<=>>=>>>=&=^=comma,
延伸文章資訊
- 1Javascript 基礎打底系列(三) - 邏輯運算子,與短路邏輯(short ...
Javascript 基礎打底系列(三) - 邏輯運算子,與短路邏輯(short circuit logic) 的應用 · 1. 用|| 來設定變數預設值 · 2. 用&& 來檢查物件與屬性值 ...
- 2運算式與運算子- JavaScript
邏輯運算子
- 3JavaScript 基礎知識-邏輯運算子&&,|| - iT 邦幫忙
JavaScript 基礎知識-邏輯運算子&&,|| ... 生活上也會有類似的邏輯判斷,例如:媽媽拜託小明去市場買菜,要買到牛肉,青菜和洋蔥,成功買到這三樣,媽媽才 ...
- 4重新認識JavaScript: Day 06 運算式與運算子 - iT 邦幫忙
邏輯運算子(Logical Operator); 字串運算子(String Operator); 特殊運算子(Special Operator). 由於篇幅的關係,系列文只會針對常見 ...
- 5[第四週] JavaScript — 使用邏輯運算子更靈活使用if - Miahsu
現代JavaScript 教程:逻辑运算符. JavaScript 中三個邏輯運算子. 為了讓一開始簡單一些,我們先從boolean 值來了解基本的邏輯運算子 ...