最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript中的單目運算符、雙目運算符和多目運算符操作大全

 更新時間:2026年03月04日 15:37:32   作者:長城2024  
文章詳細介紹了JavaScript中的單目運算符、雙目運算符和三元運算符,并提供了每個運算符的示例和陷阱規(guī)避方法,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

        在 JavaScript 中,運算符根據(jù)其操作數(shù)(即參與運算的變量或值)的數(shù)量可以分為單目運算符、雙目運算符和多目運算符。這些名稱的由來與運算符所需操作數(shù)的個數(shù)相關(guān)。

一、單目運算符(Unary Operator)

定義‌:單目運算符是指只需要一個操作數(shù)的運算符。這類運算符通常作用于一個變量或值。

命名由來‌:"單目"中的"目"指的是操作數(shù),"單"表示只有一個操作數(shù)。例如:

  • 一元加法‌:+x,將變量 x 轉(zhuǎn)換為數(shù)字。
  • 一元減法‌:-x,將變量 x 取反。
  • 遞增運算符‌:++x 或 x++,將變量 x 的值加 1。
  • 遞減運算符‌:--x 或 x--,將變量 x 的值減 1。
  • 邏輯非‌:!x,對變量 x 進行邏輯取反。
  • 按位非‌:~x,對變量 x 進行按位取反。

示例‌:

let x = 5;
console.log(-x); // 輸出 -5
console.log(++x); // 輸出 6
console.log(!true); // 輸出 false

二、雙目運算符(Binary Operator)

定義‌:雙目運算符是指需要兩個操作數(shù)的運算符。這類運算符通常作用于兩個變量或值。

命名由來‌:"雙目"中的"目"同樣指的是操作數(shù),"雙"表示有兩個操作數(shù)。例如:

  • 加法‌:x + y,將兩個數(shù)相加。
  • 減法‌:x - y,將兩個數(shù)相減。
  • 乘法‌:x * y,將兩個數(shù)相乘。
  • 除法‌:x / y,將兩個數(shù)相除。
  • 取模‌:x % y,求兩個數(shù)相除的余數(shù)。
  • 比較運算符‌:x > y、x < y、x == y 等。
  • 邏輯運算符‌:x && y、x || y。

示例‌:

let a = 10;
let b = 5;
console.log(a + b); // 輸出 15
console.log(a > b); // 輸出 true
console.log(a && b); // 輸出 5(因為 a 和 b 都為真)

三、多目運算符(Ternary Operator)

定義‌:多目運算符是指需要三個或三個以上操作數(shù)的運算符。在 JavaScript 中,最典型的多目運算符是三元運算符。

命名由來‌:"多目"中的"目"指的是操作數(shù),"多"表示有多個操作數(shù)。三元運算符是唯一一個需要三個操作數(shù)的運算符,其結(jié)構(gòu)為 條件 ? 表達式1 : 表達式2。

示例‌:

let age = 20;
let status = (age >= 18) ? "成年人" : "未成年人";
console.log(status); // 輸出 "成年人"

在這個例子中,age >= 18 是條件表達式,"成年人" 是條件為真時的返回值,"未成年人" 是條件為假時的返回值。

總結(jié)

  • 單目運算符‌:只需要一個操作數(shù),如 ++x、-x
  • 雙目運算符‌:需要兩個操作數(shù),如 x + yx > y。
  • 多目運算符‌:需要三個操作數(shù),如 x ? y : z(三元運算符)。

這些名稱的由來直觀地反映了運算符所需操作數(shù)的個數(shù),便于理解和記憶。

四、8個多目運算符示例詳細解析

1. 基本條件賦值

let age = 20;
let status = age >= 18 ? "成年人" : "未成年人";

解析‌:

  • let age = 20;:定義一個變量 age,并將其值設(shè)置為 20。
  • let status = age >= 18 ? "成年人" : "未成年人";:這是三目運算符的核心部分。
    • age >= 18 是條件表達式,它會計算 age 是否大于等于 18。
    • 如果條件為真(即 age 確實大于等于 18),則整個表達式的值為 "成年人"。
    • 如果條件為假(即 age 小于 18),則整個表達式的值為 "未成年人"。
    • 最終,status 變量將被賦值為計算結(jié)果。

2. 嵌套條件判斷

let score = 85;
let grade = score >= 90 ? "A" : score >= 80 ? "B" : score >= 70 ? "C" : "D";

解析‌:

  • let score = 85;:定義變量 score 并賦值為 85。
  • let grade = score >= 90 ? "A" : score >= 80 ? "B" : score >= 70 ? "C" : "D";:這是一個嵌套的三目運算符。
    • 首先檢查 score >= 90,如果為真則 grade 為 "A"。
    • 如果第一個條件為假,則檢查 score >= 80,如果為真則 grade 為 "B"。
    • 如果第二個條件也為假,則檢查 score >= 70,如果為真則 grade 為 "C"。
    • 如果所有條件都為假,則 grade 為 "D"。
    • 這種方式可以實現(xiàn)多個等級的判斷,從高到低依次比較。

3. 條件函數(shù)調(diào)用

let isLoggedIn = true;
let message = isLoggedIn ? console.log("歡迎回來") : console.log("請先登錄");

解析‌:

  • let isLoggedIn = true;:定義一個布爾變量 isLoggedIn 并賦值為 true。
  • let message = isLoggedIn ? console.log("歡迎回來") : console.log("請先登錄");:這里三目運算符的兩個結(jié)果都是函數(shù)調(diào)用。
    • 如果 isLoggedIn 為真(true),則執(zhí)行 console.log("歡迎回來")
    • 如果 isLoggedIn 為假(false),則執(zhí)行 console.log("請先登錄")
    • 由于 console.log 函數(shù)沒有返回值,message 變量最終會得到 undefined。

4. 對象屬性設(shè)置

let user = {
    name: "張三",
    isActive: true,
    status: user.isActive ? "活躍用戶" : "非活躍用戶"
};

解析‌:

  • let user = { ... };:創(chuàng)建一個對象 user。
  • name: "張三":設(shè)置對象的 name 屬性為 "張三"。
  • isActive: true:設(shè)置對象的 isActive 屬性為 true。
  • status: user.isActive ? "活躍用戶" : "非活躍用戶":這是三目運算符在對象中的應(yīng)用。
    • 檢查 user.isActive 的值。
    • 如果為真,則 status 屬性值為 "活躍用戶"。
    • 如果為假,則 status 屬性值為 "非活躍用戶"。

5. 數(shù)組元素處理

let numbers = [1, 2, 3, 4, 5];
let result = numbers.map(n => n > 3 ? n * 2 : n);

解析‌:

  • let numbers = [1, 2, 3, 4, 5];:創(chuàng)建一個包含數(shù)字 1 到 5 的數(shù)組。
  • let result = numbers.map(n => n > 3 ? n * 2 : n);:使用 map 方法處理數(shù)組中的每個元素。
    • numbers.map() 方法會遍歷數(shù)組中的每個元素。
    • n => n > 3 ? n * 2 : n 是一個箭頭函數(shù),對每個元素 n 進行處理。
    • 對于每個元素 n,檢查 n > 3 是否為真。
    • 如果為真(即 n 大于 3),則返回 n * 2(元素值乘以 2)。
    • 如果為假(即 n 小于等于 3),則返回 n(保持原值)。
    • 最終 result 數(shù)組將包含 [1, 2, 3, 8, 10]。

6. 條件返回值

function getMax(a, b) {
    return a > b ? a : b;
}

解析‌:

  • function getMax(a, b) {:定義一個名為 getMax 的函數(shù),接受兩個參數(shù) a 和 b。
  • return a > b ? a : b;:這是函數(shù)的返回語句。
    • 比較參數(shù) a 和 b 的大小。
    • 如果 a 大于 b,則返回 a。
    • 如果 a 不大于 b(即 a 小于等于 b),則返回 b。
    • 這個函數(shù)的作用是返回兩個數(shù)中的較大值。

7. 復(fù)雜條件表達式

let price = 150;
let discount = price >= 200 ? 0.2 : price >= 100 ? 0.1 : 0;
let finalPrice = price * (1 - discount);

解析‌:

  • let price = 150;:定義變量 price 并賦值為 150。
  • let discount = price >= 200 ? 0.2 : price >= 100 ? 0.1 : 0;:這是復(fù)雜的嵌套三目運算符。
    • 首先檢查 price >= 200,如果為真則 discount 為 0.2(20% 折扣)。
    • 如果第一個條件為假,則檢查 price >= 100,如果為真則 discount 為 0.1(10% 折扣)。
    • 如果兩個條件都為假,則 discount 為 0(無折扣)。
    • 在這個例子中,price 為 150,所以 discount 為 0.1。
  • let finalPrice = price * (1 - discount);:計算最終價格。
    • 1 - discount 計算折扣后的比例(1 - 0.1 = 0.9)。
    • price * 0.9 計算最終價格(150 * 0.9 = 135)。

8. 條件賦值與默認值

let userName = null;
let displayName = userName || "訪客";
let greeting = displayName ? `你好, ${displayName}!` : "歡迎訪問";

解析‌:

  • let userName = null;:定義變量 userName 并賦值為 null。
  • let displayName = userName || "訪客";:這里使用了邏輯或運算符(||)。
    • 如果 userName 為真值(非 null、非 undefined、非空字符串等),則 displayName 為 userName 的值。
    • 如果 userName 為假值(null、undefined、空字符串等),則 displayName 為 "訪客"。
    • 在這個例子中,userName 為 null,所以 displayName 為 "訪客"。
  • let greeting = displayName ? 你好, ${displayName}! : "歡迎訪問";:這是三目運算符的應(yīng)用。
    • 檢查 displayName 是否為真值。
    • 如果為真,則返回模板字符串 你好, ${displayName}!,其中 ${displayName} 會被替換為 "訪客"。
    • 如果為假,則返回 "歡迎訪問"。

        三目運算符的優(yōu)勢在于其簡潔性,能夠用一行代碼實現(xiàn)簡單的條件邏輯。它特別適合用于賦值、返回值和簡單的條件判斷場景。然而,過度嵌套會使代碼難以閱讀,因此在使用時應(yīng)保持適度。

五、陷阱規(guī)避

        JavaScript 中的單目、雙目和多目運算符在使用時存在多種陷阱,主要包括以下幾類:

1、單目運算符陷阱

‌        自增自減運算符的前置與后置區(qū)別‌:++a 和 a++ 的執(zhí)行順序不同,前置運算符先增加再使用變量值,后置運算符先使用再增加。例如在表達式中 let a = 1; let b = ++a; 會使 b 的值為 2,而 let c = a++; 會使 c 的值為 1。

‌        一元運算符的類型轉(zhuǎn)換‌:一元加法運算符 + 會嘗試將操作數(shù)轉(zhuǎn)換為數(shù)字,如果轉(zhuǎn)換失敗則返回 NaN。例如 +'abc' 的結(jié)果是 NaN。

2、雙目運算符陷阱

 ‌       加法運算符的類型混淆‌:加法運算符 + 既可以進行數(shù)學(xué)加法,也可以進行字符串拼接。當操作數(shù)中至少有一個是字符串時,JavaScript 會將另一個操作數(shù)也轉(zhuǎn)換為字符串。例如 1 + "2" 的結(jié)果是 "12" 而不是 3

‌        運算符優(yōu)先級問題‌:不同運算符有不同的優(yōu)先級,可能導(dǎo)致意外的結(jié)果。例如 2 ** 3 * 2 會先計算冪運算再計算乘法,結(jié)果為 16。在邏輯運算符中,&& 的優(yōu)先級高于 ||

 ‌       浮點數(shù)精度問題‌:由于 JavaScript 使用 IEEE 754 標準,浮點數(shù)運算可能出現(xiàn)精度誤差。例如 0.1 + 0.2 的結(jié)果不是 0.3,而是 0.30000000000000004

 ‌       比較運算符的隱式類型轉(zhuǎn)換‌:使用寬松相等 == 時,JavaScript 會進行類型轉(zhuǎn)換,可能導(dǎo)致意外結(jié)果。例如 0 == false 為 true,"" == false 為 true。

3、多目運算符陷阱

‌        三目運算符的可讀性問題‌:三目運算符嵌套使用時容易導(dǎo)致代碼難以理解。例如 condition ? (a > b ? a : b) : c 過于復(fù)雜時應(yīng)簡化。

 ‌       邏輯運算符的返回值特性‌:邏輯運算符 && 和 || 不總是返回布爾值,而是返回實際參與運算的值。例如 0 || "hello" 會返回字符串 "hello"。

 ‌       條件判斷邏輯錯誤‌:在使用邏輯或運算符 || 連接多個"不等于"條件時,可能導(dǎo)致判斷始終為真。例如 if (a != 1 || a != 2) 會始終為真。

4、通用陷阱與規(guī)避方法

‌        類型轉(zhuǎn)換陷阱‌:JavaScript 的隱式類型轉(zhuǎn)換機制可能導(dǎo)致意外結(jié)果。建議使用嚴格相等 === 而非寬松相等 ==。

 ‌       空值處理陷阱‌:在處理 null 和 undefined 時,它們的比較行為特殊。null == undefined 為 true,但 null === undefined 為 false

 ‌       數(shù)組與對象的轉(zhuǎn)換陷阱‌:數(shù)組參與運算時會先轉(zhuǎn)換為字符串,例如 [1,2] + [3,4] 會得到 "1,23,4"。

 ‌       字符串拼接與數(shù)學(xué)運算混淆‌:加法運算符在涉及字符串時會進行拼接而非數(shù)學(xué)運算,需要注意操作數(shù)類型。

        避免這些陷阱的關(guān)鍵在于理解運算符的特性和優(yōu)先級,使用顯式類型轉(zhuǎn)換,以及在復(fù)雜邏輯中使用清晰的代碼結(jié)構(gòu)。

到此這篇關(guān)于Javascript中的單目運算符、雙目運算符和多目運算符操作大全的文章就介紹到這了,更多相關(guān)js單目運算符、雙目運算符和多目運算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • layUI使用layer.open,在content打開數(shù)據(jù)表格,獲取值并返回的方法

    layUI使用layer.open,在content打開數(shù)據(jù)表格,獲取值并返回的方法

    今天小編就為大家分享一篇layUI使用layer.open,在content打開數(shù)據(jù)表格,獲取值并返回的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JavaScript中Array的實用操作技巧分享

    JavaScript中Array的實用操作技巧分享

    最近在調(diào)試JSP頁面時頻繁與ajax打交道,在復(fù)雜場景下,ajax傳參數(shù)就需要對大量參數(shù)進行處理。這時我才發(fā)現(xiàn),熟練Array的處理真的會使開發(fā)輕松不少??!下面就給大家分享下JavaScript中Array的實用操作技巧,有需要的可以參考借鑒。
    2016-09-09
  • 實例學(xué)習(xí)JavaScript讀取和寫入cookie

    實例學(xué)習(xí)JavaScript讀取和寫入cookie

    本篇內(nèi)容主要給大家通過實例講述了JavaScript讀取和寫入cookie的相關(guān)知識點,有這方面需要的朋友參考下吧。
    2018-01-01
  • webpack教程之webpack.config.js配置文件

    webpack教程之webpack.config.js配置文件

    本篇文章主要介紹了webpack教程之webpack.config.js配置文件 ,具有一定的參考價值,有興趣的可以了解一席
    2017-07-07
  • Laravel中常見的錯誤與解決方法小結(jié)

    Laravel中常見的錯誤與解決方法小結(jié)

    大家在用Laravel框架期間可能會遇到了不少問題,現(xiàn)在我將自己遇到的一些問題總結(jié)出來,有一些調(diào)試起來著實不太容易,本文篩選出幾個,希望這篇文章能讓大家在PHP開發(fā)中少走一些彎路。
    2016-08-08
  • 基于JS遞歸函數(shù)細化認識及實用實例(推薦)

    基于JS遞歸函數(shù)細化認識及實用實例(推薦)

    下面小編就為大家?guī)硪黄贘S遞歸函數(shù)細化認識及實用實例(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 微信小程序?qū)崿F(xiàn)簡單計算器功能

    微信小程序?qū)崿F(xiàn)簡單計算器功能

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)簡單計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 微信小程序?qū)崿F(xiàn)拼圖游戲

    微信小程序?qū)崿F(xiàn)拼圖游戲

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)拼圖游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • javascript實現(xiàn)倒計時跳轉(zhuǎn)頁面

    javascript實現(xiàn)倒計時跳轉(zhuǎn)頁面

    本文給大家介紹了如何使用javascript實現(xiàn)倒計時跳轉(zhuǎn)到其他頁面的方法以及實現(xiàn)原理,非常的簡單實用,有需要的小伙伴可以參考下。
    2016-01-01
  • JS+Canvas實現(xiàn)動態(tài)時鐘效果

    JS+Canvas實現(xiàn)動態(tài)時鐘效果

    這篇文章主要為大家詳細介紹了JS+Canvas實現(xiàn)動態(tài)時鐘效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評論

北碚区| 钟祥市| 罗田县| 望江县| 弥渡县| 平阴县| 合阳县| 新源县| 稷山县| 阿勒泰市| 孟津县| 蕲春县| 宁化县| 青田县| 临江市| 时尚| 安新县| 乳源| 布尔津县| 宿州市| 吉木乃县| 南安市| 丹凤县| 舞钢市| 北京市| 遂平县| 改则县| 博罗县| 迁西县| 玉山县| 都兰县| 车险| 罗源县| 蕉岭县| 陇南市| 萍乡市| 长沙县| 金阳县| 科尔| 怀安县| 新巴尔虎右旗|