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