立即执行函数
页面加载完成后只执行一次的设置函数。
- (function (a, b) {
- console.log(a, b); // 1,2
- })(1, 2);
通常,全局变量被作为一个参数传递给立即执行参数,这样它在函数内部不使用window也可以被访问到。
- (function (global) {
- console.log(global); // Window对象
- })(this);
多层嵌套三目运算符
三目运算符嵌套的写法,使得代码可读性差,简单业务场景下可以试着使用。
- var a = 1;
- var b = 0;
- a == 1 ? (b == 2 ? (b = 3) : (b = 1)) : "";
- console.log(b); // 1
冻结对象
不可对指定对象增删改。
- var emptyObject = Object.freeze({
- key: "1",
- });
- emptyObject.name = "maomin";
- delete emptyObject.key;
- emptyObject.key = "2";
- console.log(emptyObject);
密封对象
只能对指定对象进行更改,不可进行增加删除操作。
- var sealObject = Object.seal({
- key: 3,
- });
- sealObject.name = "maomin";
- delete sealObject.key;
- sealObject.key = 4;
- console.log(sealObject); // 4
检查是否是原始值
- function isPrimitive(value) {
- return (
- typeof value === "string" ||
- typeof value === "number" ||
- // $flow-disable-line
- typeof value === "symbol" ||
- typeof value === "boolean"
- );
- }
快速检测是否是对象
当我们知道原始值时,它主要用于将对象与原始值区分开来。
- function isObject(obj) {
- return obj !== null && typeof obj === "object";
- }
- console.log(isObject(true)); //false
检测目标类型
- var _toString = Object.prototype.toString;
- function toRawType(value) {
- return _toString.call(value).slice(8, -1);
- }
- console.log(toRawType([])); // Array
检查目标是否是有效的数组索引
- function isValidArrayIndex(val) {
- var n = parseFloat(String(val));
- return n >= 0 && Math.floor(n) === n && isFinite(val);
- }
检测是否是Promise对象