JavaScript 運算子Operators - Fooish 程式技術

文章推薦指數: 80 %
投票人數:10人

算術運算子(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<>=x>>=y意思跟x=x>>y一樣,將x所有位元右移y位,最左邊的位元(signbit)補入跟原本最左位元一樣值後指定回x變數>>>=x>>>=y跟>>=一樣,但最左邊的位元補0&=x&=y意思跟x=x&y一樣,將xy做位元AND運算後的值指定回x變數^=x^=y意思跟x=x^y一樣,將xy做位元XOR運算後的值指定回x變數|=x|=y意思跟x=x|y一樣,將xy做位元OR運算後的值指定回x變數比較運算子(ComparisonOperators)用來比較運算子兩邊運算元的關係,比較後傳回true或false。

運算元可以是數值、字串、表達式(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>9>>2=2右移運算(Sign-propagatingrightshift),將所有位元向右移n個位置,最左邊的位元(signbit)補入跟原本最左位元一樣值,保持正負數一致>>>19>>>2=4補零右移(Zero-FillRightShift),跟>>一樣,但最左邊的位元補0邏輯運算子(LogicalOperators)邏輯運算子用來做布林值(boolean)的運算,運算結果傳回true或false。

在真假判斷式中,所有東西都可以轉換為布林值,而除了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,



請為這篇文章評分?