欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

if else 基本使用

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

簡(jiǎn)化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ùn)算符優(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)化 多個(gè)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);
}

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

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語(yǔ)法糖

箭頭函數(shù)

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

三目運(yùn)算符處理函數(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ù)默認(rèn)參數(shù)處理

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

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

數(shù)據(jù)類(lèi)型轉(zhuǎn)換

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

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

/**
 *
 * Null、Undefined 布爾值等特殊值處理,使用||結(jié)合!
 *
 * */
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 || "其他人"); // 其他人

鏈判斷運(yùn)算符

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

更多鏈判斷運(yùn)算符請(qǐng)參考

鏈判斷運(yùn)算符

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);

空值合并操作符 ??

概念

  • 空值合并操作符(??)是一個(gè)邏輯操作符,當(dāng)左側(cè)的操作數(shù)為 null 或者 undefined 時(shí),返回其右側(cè)操作數(shù),否則返回左側(cè)操作數(shù)。
  • 與邏輯或操作符(||)不同,邏輯或操作符會(huì)在左側(cè)操作數(shù)為假值時(shí)返回右側(cè)操作數(shù)。
  • 如果使用 || 來(lái)為某些變量設(shè)置默認(rèn)值,可能會(huì)遇到意料之外的行為。比如為假值(例如,'' 或 0)時(shí)。
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

小結(jié)

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

源碼地址

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

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

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

相關(guān)文章

最新評(píng)論