亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解JavaScript中if語句優(yōu)化和部分語法糖小技巧推薦

 更新時間:2022年05月17日 11:14:23   作者:程序員布歐  
在前端日常開發(fā)過程中,if?else判斷語句使用的次數(shù)應該是比較頻繁的了,一些較為復雜的場景,可能會用到很多判斷,本文給大家介紹JavaScript中if語句優(yōu)化和部分語法糖小技巧,感興趣的朋友一起看看吧

前言

  • 在前端日常開發(fā)過程中,if else判斷語句使用的次數(shù)應該是比較頻繁的了,一些較為復雜的場景,可能會用到很多判斷,在某個代碼塊使用很多if else時,代碼會顯得較為冗余,閱讀起來不夠清晰。
  • 除了if else,在開發(fā)過程中,還經常使用 邏輯運算符 && || 以及三木運算符? : 等。

if else 基本使用

let name = "zhangsan";
if (name === "zhangsan") {
	console.log("zhangsan"); // zhangsan
} else {
	console.log("lisi");
}

簡化if判斷和優(yōu)化代碼

單行if else

if (name === "zhangsan") console.log("zhangsan");
else console.log("lisi");

使用&& || 優(yōu)化

let userInfo = {
	name: "zhangsan",
};
if (userInfo.name === "zhangsan") {
	console.log("zhangsan");
}
if (!userInfo.age) {
	// userInfo.age--> false age屬性不存在
	console.log("年齡屬性不存在");
}
userInfo.name === "zhangsan" && console.log("zhangsan");
userInfo.age || console.log("年齡屬性不存在"); // 年齡屬性不存在

使用三目運算符優(yōu)化

let name = "zhangsan";
name === "zhangsan" ? console.log("zhangsan") : console.log("lisi");

合并if

let userObj = { name: "zhangsan", children: { name: "lisi" } };
if (userObj.children) {
  if (userObj.children.name == "lisi") {
    console.log(userObj.children.name);
  }
}
if (userObj.children && userObj.children.name == "lisi")
  console.log(userObj.children.name);

使用includes 或者indexof

let age = "22";
if (age == "22" || age == "24" || age == "25") {
  console.log(age);
}
let ageArray = ["22", "24", "25"];
if (ageArray.includes(age)) {
  console.log(age);
}
if (ageArray.indexOf(age) > -1) {
  console.log(age);
}

使用switch流程 優(yōu)化 多個if else

let val = "lisi";
switch (val) {
  case "zhangsan":
    console.log(val);
    break;
  case "lisi":
    console.log(val);
    break;
  case "xiaoming":
    console.log(val);
    break;
  case "xiaowang":
    console.log(val);
    break;
  default:
    console.log(val);
}

使用對象 key-value 優(yōu)化多條if語句

let userArray = [
  { name: "zhangsan" },
  { name: "lisi" },
  { name: "xiaoming" },
  { name: "xiaowang" },
];

// 多重if else
if (userArray.name === "zhangsan") {
  console.log(userArray.name);
} else if (userArray.name === "lisi") {
  console.log(userArray.name);
} else if (userArray.name === "xiaoming") {
  console.log(userArray.name);
} else if (userArray.name === "xiaowang") {
  console.log(userArray.name);
} else {
  console.log("其他用戶");
}

function getUser(username) {
  return userArray.filter((item) => item.name == username)[0];
}
console.log(getUser("zhangsan"));

使用map

let filterUser = function (username) {
  return `名字是${username}`;
};
let userMap = new Map([
  ["zhangsan", filterUser("zhangsan")],
  ["lisi", filterUser("lisi")],
  ["xiaoming", filterUser("xiaoming")],
  ["xiaowang", filterUser("xiaowang")],
]);
console.log(userMap.get("zhangsan"));   // 名字是zhangsan

推薦一些常用的JavaScript語法糖

箭頭函數(shù)

/**
 * 箭頭函數(shù)
 *
 * */
function userInfo(name, age) {
  return `名字是:${name},年齡是:${age}`;
}
let userInfo = (name, age) => `名字是:${name},年齡是:${age}`;
console.log(userInfo("zhangsan", "23"));

三目運算符處理函數(shù)

function log1() {
  console.log(1);
}
function log2() {
  console.log(2);
}
let num = 2;
if (num === 1) {
  log1();
} else {
  log2();
}
num === 1 ? log1() : log2();

函數(shù)默認參數(shù)處理

let getUser = (name = "zhangsan", age = 23) =>
      `名字是:${name},年齡是:${age}`;

console.log("默認參數(shù)", getUser());
console.log("傳參", getUser("lisi", 29));

數(shù)據(jù)類型轉換

let num1 = +"123";
console.log(num1);

Null、Undefined 布爾值等特殊值處理,使用||結合!

/**
 *
 * Null、Undefined 布爾值等特殊值處理,使用||結合!
 *
 * */
let name1 = undefined;
let name2 = null;
let name3 = true;
let name4 = false;
let name5 = "lisi";
console.log(name1 || "其他人"); // 其他人
console.log(name2 || "其他人"); // 其他人
console.log(name3 || "其他人"); // true
console.log(!name3 || "其他人"); // 其他人
console.log(name4 || "其他人"); // 其他人
console.log(name5 || "其他人"); // lisi
console.log(!name5 || "其他人"); // 其他人

鏈判斷運算符

?.運算符在運算過程中,會首先從左到右執(zhí)行,左側的對象是否為null或undefined。如果是的,就不再往右邊執(zhí)行運算,而是返回undefined

更多鏈判斷運算符請參考

鏈判斷運算符

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Optional_chaining

let user = {
  name: "zhangsan",
  children: { name: "lisi", children: { name: "xiaoming" } },
};
let name1 = user?.name;
let name2 = user?.children?.name;
let name3 = user?.children?.children?.name;
console.log(name1);
console.log(name2);
console.log(name3);

空值合并操作符 ??

概念

  • 空值合并操作符(??)是一個邏輯操作符,當左側的操作數(shù)為 null 或者 undefined 時,返回其右側操作數(shù),否則返回左側操作數(shù)。
  • 與邏輯或操作符(||)不同,邏輯或操作符會在左側操作數(shù)為假值時返回右側操作數(shù)。
  • 如果使用 || 來為某些變量設置默認值,可能會遇到意料之外的行為。比如為假值(例如,'' 或 0)時。
const foo = null ?? "default string";
const test = undefined ?? "default string";
const test1 = 123 ?? "default string";
console.log(test); // "default string"
console.log(foo); // "default string"
console.log(test1); // 123
const baz = 0 ?? 42;
console.log(baz); // 0
const str = "" ?? 42;
const str1 = "" || 42;
console.log(str); // ""
console.log(str1); // 42

小結

  • 以上就是對于if代碼優(yōu)化的一些建議,if else 在使用過程中,有時候會相對繁瑣一些,但是也是較為直接的判斷語句
  • 是否優(yōu)化if語句,還是要根據(jù)具體的業(yè)務場景,具體去做,需要個人進行判斷
  • JavaScript的語法糖在日常開發(fā)過程中,可以省去一些繁瑣的判斷或者說語義化
  • ES6或者更高版本的ECMA語法更新了不少,對于一些語法的擴展,在開發(fā)過程中還是提供了不少幫助。

源碼地址

碼云 https://gitee.com/lewyon/vue-note

githup https://github.com/akari16/vue-note

到此這篇關于JavaScript中if語句優(yōu)化和部分語法糖小技巧推薦的文章就介紹到這了,更多相關js if語句優(yōu)化內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • js實現(xiàn)頁面導航層級指示效果

    js實現(xiàn)頁面導航層級指示效果

    這篇文章主要為大家詳細介紹了js實現(xiàn)頁面導航層級指示效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 關于BootstrapTable 導出數(shù)據(jù)的問題最終解決方案

    關于BootstrapTable 導出數(shù)據(jù)的問題最終解決方案

    這篇文章主要介紹了BootstrapTable 導出數(shù)據(jù)的問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Easyui Tree獲取當前選擇節(jié)點的所有頂級父節(jié)點

    Easyui Tree獲取當前選擇節(jié)點的所有頂級父節(jié)點

    這篇文章主要介紹了Easyui Tree獲取當前選擇節(jié)點的所有頂級父節(jié)點,以及easyUI Tree顯示選中節(jié)點的所有父節(jié)點的實現(xiàn)代碼,需要的朋友可以參考下
    2017-02-02
  • wow.js實現(xiàn)炫酷的頁面滾動伴隨動畫示例詳解

    wow.js實現(xiàn)炫酷的頁面滾動伴隨動畫示例詳解

    這篇文章主要為大家介紹了wow.js實現(xiàn)炫酷的頁面滾動伴隨動畫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • js輪播圖無縫滾動效果

    js輪播圖無縫滾動效果

    這篇文章主要為大家詳細介紹了js輪播圖無縫滾動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • JavaScript二叉樹及各種遍歷算法詳情

    JavaScript二叉樹及各種遍歷算法詳情

    這篇文章主要介紹了JavaScript二叉樹及各種遍歷算法詳情,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • 清除瀏覽器緩存的幾種方法總結(必看)

    清除瀏覽器緩存的幾種方法總結(必看)

    下面小編就為大家?guī)硪黄宄秊g覽器緩存的幾種方法總結(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • JavaScript事件委托實例分析

    JavaScript事件委托實例分析

    這篇文章主要介紹了JavaScript事件委托的用法,以實例形式分析了javascript事件委托的實現(xiàn)方法,需要的朋友可以參考下
    2015-05-05
  • javascript實現(xiàn)當前頁導航激活的方法

    javascript實現(xiàn)當前頁導航激活的方法

    這篇文章主要介紹了javascript實現(xiàn)當前頁導航激活的方法,涉及javascript操作css的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 一文搞懂ES6中的Map和Set

    一文搞懂ES6中的Map和Set

    這篇文章主要介紹了ES6中的Map和Set,本文給大家提到了map和object的區(qū)別 ,需要的朋友可以參考下
    2019-05-05

最新評論