网站建设面试题,手机在线查看html源代码,沈阳制作公司网站和app,佛山新网站制作机构前端面试题库 #xff08;面试必备#xff09; 推荐#xff1a;★★★★★
地址#xff1a;前端面试题库 实践中需要给某个变量赋值时#xff0c;若数据来源不可控#xff0c;通常会给它设置一个默认值#xff08;就像空对象模式一样#xff09;。JavaScri… 前端面试题库 面试必备 推荐★★★★★
地址前端面试题库 实践中需要给某个变量赋值时若数据来源不可控通常会给它设置一个默认值就像空对象模式一样。JavaScript中有很多语法支持设置这样的默认值比如函数参数默认值解构赋值默认值等。但本文主要讨论手动赋值时的3默认值设置方式
使用条件判断设置默认值如let result input || {}使用空判断运算符如let result input ?? {}配合typeof判断类型设置默认值如let result typeof(input) ! undefined ? input : {} ||运算符 这种形式主要利用了 Boolean() 类型转换以及 || 运算符的短路特性其也可改写成三目运算符?:或If-else语句形式受布尔类型转换限制所有的 假值都会被认为未赋值。
// 当 input 为undefined、null、、0、NaN、false 时会被忽略
let input;
// 即 result 值不会为undefined、null、、0、NaN、false
let result;result input || {};// 变体1三目运算符形式
result input ? input : {};
// 变体2If-else 语句
if(input) {result input;
} else {result {};
}// 若只涉及一个变量还可简写
obj || {};??运算符 由于 || 会忽略所有假值TC39在ES2020的提案里提出 ?? 运算符仅当左侧运算数为 null 或 undefined 时才会计算右侧表达式。多配合 ?. 可选链式运算符一起使用。
// 当 input 为undefined、null 时会被忽略
let input;
// 即 result 值不会为undefined、null可以是、0、NaN、false
let result;result input ?? {}; // 若只涉及一个变量还可简写
obj ?? {};typeof运算符 还有场景只有在输入为 undefined 时才认为是无效输入即 null 被认为是有效输入。此时可使用 typeof 运算符判断输入类型是否为 undefined 来区分若已明确输入变量已经声明则可将变量和 undefined 比较通过其是否相等来判断。
// 当 input 为undefined 时会被忽略
let input;
// 即 result 值不会为undefined可以是null、、0、NaN、false
let result;result (typeof(input) ! undefined) ? input : {};// 变体直接和 undefined 判断需注意若input未声明会报错
result (input ! undefined) ? input : {};总结 在面向对象编程过程中大多场景变量是引用对象的这些情况下 ?? 配合 ?. 会更符合现代编程语言的写法也是官方推荐使用的。
const EMPTY_WALLET {money: 0
}function consume(user null, goods null) {if (null (goods?.price ?? null)) {return false;}let wallet user?.info?.wallet ?? EMPTY_WALLET;if (wallet.money goods.price) {return false;}wallet.money - goods.price;return true;
} 前端面试题库 面试必备 推荐★★★★★
地址前端面试题库