摘要:復習表達式和運算符運算符擁有如下類型的運算符。例如十進制數字用二進制表示為,位運算符就是在這個二進制表示上執行運算,但是返回結果是標準的數值。因此,用于布爾值時,當任何一個操作數為則返回如果操作數都是則返回。
復習js day2 表達式和運算符 運算符
JavaScript 擁有如下類型的運算符。本節描述了運算符和運算符的優先級。
賦值運算符(Assignment operators)
比較運算符(Comparison operators)
算數運算符(Arithmetic operators)
位運算符(Bitwise operators)
邏輯運算符(Logical operators)
字符串運算符(String operators)
條件(三元)運算符(Conditional operator)
逗號運算符(Comma operator)
一元運算符(Unary operators)
關系運算符(Relational operator)
解構賦值詳見 http://es6.ruanyifeng.com/#do...賦值運算符
一個 賦值運算符(assignment operator) 將它右邊操作數的值賦給它左邊的操作數。最簡單的賦值運算符是等于(=),它將右邊的操作數值賦給左邊的操作數。那么 x = y 就是將 y 的值賦給 x。
還有一些復合賦值操作符,它們是下表列出的這些操作的縮寫:
名字 | 簡寫的操作符 | 含義 | ||
---|---|---|---|---|
賦值(Assignment) | x = y | x = y | ||
加法賦值(Addition assignment) | x += y | x = x + y | ||
減法賦值(Subtraction assignment) | x -= y | x = x - y | ||
乘法賦值(Multiplication assignment) | x *= y | x = x * y | ||
除法賦值(Division assignment) | x /= y | x = x / y | ||
求余賦值(Remainder assignment) | x?%= y | x = x?% y | ||
求冪賦值(Exponentiation assignment) | x **= y | x = x ** y | ||
左移位賦值(Left shift assignment) | x <<= y | x = x << y | ||
右移位賦值(Right shift assignment) | x >>= y | x = x >> y | ||
無符號右移位賦值(Unsigned right shift assignment) | x >>>= y | x = x >>> y | ||
按位與賦值(Bitwise AND assignment) | x &= y | x = x & y | ||
按位異或賦值(Bitwise XOR assignment) | x ^= y | x = x ^ y | ||
按位或賦值(Bitwise OR assignment) | x | = y | x = x | y |
算術運算符使用數值(字面量或者變量)作為操作數并返回一個數值.標準的算術運算符就是加減乘除(+ - * /)。當操作數是浮點數時,這些運算符表現得跟它們在大多數編程語言中一樣(特殊要注意的是,除零會產生Infinity)。例如:
1 / 2; // 0.5 1 / 2 == 1.0 / 2.0; // true位運算符
位運算符將它的操作數視為32位元的二進制串(0和1組成)而非十進制八進制或十六進制數。例如:十進制數字9用二進制表示為1001,位運算符就是在這個二進制表示上執行運算,但是返回結果是標準的JavaScript數值。
Operator | Usage | Description | |
---|---|---|---|
按位與?AND | a & b | 在a,b的位表示中,每一個對應的位都為1則返回1, 否則返回0. | |
按位或?OR | a | b | 在a,b的位表示中,每一個對應的位,只要有一個為1則返回1, 否則返回0. |
按位異或?XOR | a ^ b | 在a,b的位表示中,每一個對應的位,兩個不相同則返回1,相同則返回0. | |
按位非?NOT | ~ a | 反轉被操作數的位。 | |
左移?shift | a << b | 將a的二進制串向左移動b位,右邊移入0. | |
算術右移 | a >> b | 把a的二進制表示向右移動b位,丟棄被移出的所有位.Operator Usage Description 按位與?AND a & b 在a,b的位表示中,每一個對應的位都為1則返回1, 否則返回0. 按位或?OR a | b 在a,b的位表示中,每一個對應的位,只要有一個為1則返回1, 否則返回0. 按位異或?XOR a ^ b 在a,b的位表示中,每一個對應的位,兩個不相同則返回1,相同則返回0. 按位非?NOT ~ a 反轉被操作數的位。 左移?shift a << b 將a的二進制串向左移動b位,右邊移入0. 算術右移 a >> b 把a的二進制表示向右移動b位,丟棄被移出的所有位. (譯注:算術右移左邊空出的位是根據最高位是0和1來進行填充的) 無符號右移 a >>> b 把a的二進制表示向右移動b位,丟棄被移出的所有位,并把左邊空出的位都填充為0 (左邊空出位用0填充) |
無符號右移(左邊空出位用0填充) | a >>> b | 把a的二進制表示向右移動b位,丟棄被移出的所有位,并把左邊空出的位都填充為0 | |
運算符 | 范例 | 描述 | ||||||
---|---|---|---|---|---|---|---|---|
邏輯與?(&&) | expr1 && expr2 | (邏輯與) 如果expr1能被轉換為false,那么返回expr1;否則,返回expr2。因此,&&用于布爾值時,當操作數都為true時返回true;否則返回false. | ||||||
邏輯或?( | ) | expr1 | expr2 | (邏輯或) 如果expr1能被轉換為true,那么返回expr1;否則,返回expr2。因此, | 用于布爾值時,當任何一個操作數為true則返回true;如果操作數都是false則返回false。 | |||
邏輯非?(!) | !expr | (邏輯非) 如果操作數能夠轉換為true則返回false;否則返回true。 |
下面是&&(邏輯"與")操作符的示例。
var a1 = true && true; // t && t returns true var a2 = true && false; // t && f returns false var a3 = false && true; // f && t returns false var a4 = false && (3 == 4); // f && f returns false var a5 = "Cat" && "Dog"; // t && t returns Dog var a6 = false && "Cat"; // f && t returns false var a7 = "Cat" && false; // t && f returns false
下面是||(邏輯"或")操作符的示例。
var o1 = true || true; // t || t returns true var o2 = false || true; // f || t returns true var o3 = true || false; // t || f returns true var o4 = false || (3 == 4); // f || f returns false var o5 = "Cat" || "Dog"; // t || t returns Cat var o6 = false || "Cat"; // f || t returns Cat var o7 = "Cat" || false; // t || f returns Cat
下面是!(邏輯"非")操作符的示例。
var n1 = !true; // !t returns false var n2 = !false; // !f returns true var n3 = !"Cat"; // !t returns false
短路求值
作為邏輯表達式進行求值是從左到右,它們是為可能的“短路”的出現而使用以下規則進行測試:
false && anything // 被短路求值為false true || anything // 被短路求值為true
邏輯的規則,保證這些評估是總是正確的。請注意,上述表達式的anything部分不會被求值,所以這樣做不會產生任何副作用。
字符串運算符除了比較操作符,它可以在字符串值中使用,連接操作符(+)連接兩個字符串值相連接,返回另一個字符串,它是兩個操作數串的結合。
例如,
console.log("my " + "string"); // console logs the string "my string". 簡寫操作符 += 也可以用來拼接字符串,例如: var myString = "alpha"; myString += "bet"; // 返回 "alphabet"條件(三元)運算符
條件運算符是JavaScript中唯一需要三個操作數的運算符。運算的結果根據給定條件在兩個值中取其一。語法為:
條件 ? 值1 : 值2
如果條件為真,則結果取值1。否則為值2。你能夠在任何允許使用標準運算符的地方使用條件運算符。
例如,
var status = (age >= 18) ? "adult" : "minor";
當 age 大于等于18的時候,將“adult”賦值給 status;否則將“minor”賦值給 status。
一元操作符 typeoftypeof操作符 可通過下面2種方式使用:
typeof operand typeof (operand)
typeof 操作符返回一個表示 operand 類型的字符串值。operand 可為字符串、變量、關鍵詞或對象,其類型將被返回。operand 兩側的括號為可選。
假設你定義了如下的變量:
var myFun = new Function("5 + 2"); var shape = "round"; var size = 1; var today = new Date(); typeof 操作符將會返回如下的結果: typeof myFun; // returns "function" typeof shape; // returns "string" typeof size; // returns "number" typeof today; // returns "object" typeof dontExist; // returns "undefined"
對于關鍵詞 true 和 null,
typeof 操作符將會返回如下結果:
typeof true; // returns "boolean" typeof null; // returns "object"
對于一個數值或字符串, typeof 操作符將會返回如下結果:
typeof 62; // returns "number" typeof "Hello world"; // returns "string"
對于屬性值,typeof 操作符將會返回屬性所包含值的類型:
typeof document.lastModified; // returns "string" typeof window.length; // returns "number" typeof Math.LN2; // returns "number"
對于方法和函數,typeof 操作符將會返回如下結果:
typeof blur; // returns "function" typeof eval; // returns "function" typeof parseInt; // returns "function" typeof shape.split; // returns "function"
對于預定義的對象,typeof 操作符將會返回如下結果:
typeof Date; // returns "function" typeof Function; // returns "function" typeof Math; // returns "object" typeof Option; // returns "function" typeof String; // returns "function"void
void 運算符運用方法如下:
void (expression) void expression
void運算符,表明一個運算沒有返回值。expression是javaScript表達式,括號中的表達式是一個可選項,當然使用該方式是一種好的形式。
你可以使用void運算符指明一個超文本鏈接。該表達式是有效的,但是并不會在當前文檔中進行加載。
如下創建了一個超鏈接文本,當用戶單擊該文本時,不會有任何效果。
Click here to do nothing
下面的代碼創建了一個超鏈接,當用戶單擊它時,提交一個表單。
Click here to submit關系操作符 in
in操作符,如果所指定的屬性確實存在于所指定的對象中,則會返回true
下面的例子是 in 操作的常見用法。
// Arrays var trees = new Array("redwood", "bay", "cedar", "oak", "maple"); 0 in trees; // returns true 3 in trees; // returns true 6 in trees; // returns false "bay" in trees; // returns false (you must specify the index number, // not the value at that index) "length" in trees; // returns true (length is an Array property) // Predefined objects "PI" in Math; // returns true var myString = new String("coral"); "length" in myString; // returns true // Custom objects var mycar = {make: "Honda", model: "Accord", year: 1998}; "make" in mycar; // returns true "model" in mycar; // returns trueinstanceof
如果所判別的對象確實是所指定的類型,則返回true。
例如, 下面的代碼使用instanceof去判斷 theDay是否是一個 Date 對象. 因為theDay是一個Date對象, 所以if中的代碼會執行.
var theDay = new Date(1995, 12, 17); if (theDay instanceof Date) { // statements to execute }表達式
表達式是一組代碼的集合,它返回一個值。(譯注:定義比較不好理解,看下面的舉例就很好懂了。)
每一個合法的表達式都能計算成某個值,但從概念上講,有兩種類型的表達式:有副作用的(比如賦值)和單純計算求值的。
表達式x=7是第一類型的一個例子。該表達式使用=運算符將值7賦予變量x。這個表達式自己的值等于7。
代碼3 + 4是第二個表達式類型的一個例子。該表達式使用+運算符把3和4加到一起但并沒有把結果(7)賦值給一個變量。
JavaScript有以下表達式類型:
算數: 得出一個數字, 例如 3.14159. (通常使用 arithmetic operators.)
字符串: 得出一個字符串, 例如, "Fred" 或 "234". (通常使用 string operators.)
邏輯值: 得出true或者false. (經常涉及到 logical operators.)
基本表達式: javascript中基本的關鍵字和一般表達式。
左值表達式: 分配給左值。
數字和日期 數字對象內置的Number對象有一些有關數字的常量屬性,如最大值、不是一個數字和無窮大的。你不能改變這些屬性,但可以按下邊的方式使用它們:
var biggestNum = Number.MAX_VALUE; var smallestNum = Number.MIN_VALUE; var infiniteNum = Number.POSITIVE_INFINITY; var negInfiniteNum = Number.NEGATIVE_INFINITY; var notANum = Number.NaN;
你永遠只用從Number對象引用上邊顯示的屬性,而不是你自己創建的Number對象的屬性。
下面的表格匯總了數字對象的屬性:
數字的屬性
屬性 | 描述 |
---|---|
Number.MAX_VALUE | 可表示的最大值 |
Number.MIN_VALUE | 可表示的最小值 |
Number.NaN | 特指”非數字“ |
Number.NEGATIVE_INFINITY | 特指“負無窮”;在溢出時返回 |
Number.POSITIVE_INFINITY | 特指“正無窮”;在溢出時返回 |
Number.EPSILON | 表示1和比最接近1且大于1的最小Number之間的差別 |
Number.MIN_SAFE_INTEGER | JavaScript最小安全整數. |
Number.MAX_SAFE_INTEGER | JavaScript最大安全整數. |
數字的方法
方法 | 描述 |
---|---|
Number.parseFloat() | 把字符串參數解析成浮點數, |
和全局方法?parseFloat()?作用一致. | |
Number.parseInt() | 把字符串解析成特定基數對應的整型數字,和全局方法?parseInt()?作用一致. |
Number.isFinite() | 判斷傳遞的值是否為有限數字。 |
Number.isInteger() | 判斷傳遞的值是否為整數。 |
Number.isNaN() | 判斷傳遞的值是否為?NaN. More robust version of the original global?isNaN(). |
Number.isSafeInteger() | 判斷傳遞的值是否為安全整數。 |
數字類型原型上的一些方法
方法 | 描述 |
---|---|
toExponential() | 返回一個數字的指數形式的字符串,形如:1.23e+2 |
toFixed() | 返回指定小數位數的表示形式,var a=123,b=a.toFixed(2)//b="123.00" |
toPrecision() | 返回一個指定精度的數字。如下例子中,a=123中,3會由于精度限制消失,var a=123,b=a.toFixed(2)//b="123.00" |
方法 | 描述 |
---|---|
abs() | 絕對值 |
sin(),?cos(),?tan() | 標準三角函數;參數為弧度 |
asin(),?acos(),?atan(),?atan2() | 反三角函數; 返回值為弧度 |
sinh(),?cosh(),?tanh() | 雙曲三角函數; 返回值為弧度. |
asinh(),?acosh(),?atanh() | 反雙曲三角函數;返回值為弧度. |
pow(),?exp(),?expm1(),?log10(),?log1p(),?log2() | 指數與對數函數 |
floor(),?ceil() | 返回最大/最小整數小于/大于或等于參數 |
min(),?max() | |
返回一個以逗號間隔的數字參數列表中的較小或較大值(分別地) | |
random() | 返回0和1之間的隨機數。 |
round(),?fround(),?trunc(), | 四舍五入和截斷函數 |
sqrt(),?cbrt(),?hypot() | 平方根,立方根,平方參數的和的平方根? |
兩個參數平方和的平方根 | |
sign() | 數字的符號, 說明數字是否為正、負、零。 |
clz32(), | 在32位2進制表示中,開頭的0的數量. |
imul() | 返回傳入的兩個參數相乘結果的類C的32位表現形式 |
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/110306.html
摘要:如果網頁中包含多個框架,那實際上就存在兩個以上不同的全局執行環境,從而存在兩個以上不同版本的構造函數。如果你從一個框架向另一個框架傳入一個數組,那么傳入的數組與在第二個框架中原生創建的數組分別具有各自不同的構造函數。 1. 首先,typeof肯定是不行的 對于一些基本類型,typeof是可以判斷出數據類型,但是判斷一些引用類型時候,不能具體到具體哪一種類型 再來復習一下typeof的...
摘要:所謂高階組件即使是接受一個組件作為參數返回一個新組件的函數用于提高組件的自身能力提高組件復用性普通高階組件函數將父級屬性向下傳遞并追加新屬性為添加樣式和木偶組件傳入一個組件返回一個函數式組件高階組件木偶組件我是本體是同樣還可以為增加生命周期 所謂高階組件即使是接受一個組件作為參數, 返回一個新組件的函數, 用于提高組件的自身能力, 提高組件復用性 1.普通高階組件 HOC函數將父級屬性...
摘要:為什么需要原型鏈為了實現繼承,具有相同特性的代碼不需要重復編寫,放在構造函數里面,實例化的對象都會擁有里面的屬性了,也就是可以共享屬性和方法。 一段簡單代碼引入 function Foo() {}; var f1 = new Foo(); showImg(https://segmentfault.com/img/bV4yXs?w=1176&h=944); 1.概念簡單理解 Foo...
摘要:可讀性,提高代碼的可讀性,便于多人的修改維護,提高開發效率。主流瀏覽器都兼容的新標簽,對于及以下版本不認識的新元素,可以使用創建一個沒用的元素來解決,例如,也可以使用來解決兼容性問題,詳情可參考 概覽 showImg(https://segmentfault.com/img/bV5JXT?w=1880&h=1050); 文檔章節 導航 表示和主要內容不相關的區域 表示一個獨...
閱讀 4270·2021-09-26 10:11
閱讀 2666·2021-07-28 00:37
閱讀 3223·2019-08-29 15:29
閱讀 1178·2019-08-29 15:23
閱讀 3124·2019-08-26 18:37
閱讀 2467·2019-08-26 10:37
閱讀 596·2019-08-23 17:04
閱讀 2346·2019-08-23 13:44