ES6开发技巧:Function Skill函数技巧

2019-08-2819:18:00WEB前端开发Comments3,267 views字数 1465阅读模式

Function Skill

函数自执行
const Func = function() {}(); // 常用

(function() {})(); // 常用
(function() {}()); // 常用
[function() {}()];

+ function() {}();
- function() {}();
~ function() {}();
! function() {}();

new function() {};
new function() {}();
void function() {}();
typeof function() {}();
delete function() {}();

1, function() {}();
1 ^ function() {}();
1 > function() {}();
复制代码
隐式返回值

只能用于单语句返回值箭头函数,如果返回值是对象必须使用()包住文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/15864.html

const Func = function(name) {
    return "I Love " + name;
};
// 换成
const Func = name => "I Love " + name;
复制代码
一次性函数

适用于运行一些只需执行一次的初始化代码文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/15864.html

function Func() {
    console.log("x");
    Func = function() {
        console.log("y");
    }
}
复制代码
惰性载入函数

函数内判断分支较多较复杂时可大大节约资源开销文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/15864.html

function Func() {
    if (a === b) {
        console.log("x");
    } else {
        console.log("y");
    }
}
// 换成
function Func() {
    if (a === b) {
        Func = function() {
            console.log("x");
        }
    } else {
        Func = function() {
            console.log("y");
        }
    }
    return Func();
}
复制代码
检测非空参数
function IsRequired() {
    throw new Error("param is required");
}
function Func(name = IsRequired()) {
    console.log("I Love " + name);
}
Func(); // "param is required"
Func("You"); // "I Love You"
复制代码
字符串创建函数
const Func = new Function("name", "console.log(\"I Love \" + name)");
复制代码
优雅处理错误信息
try {
    Func();
} catch (e) {
    location.href = "https://stackoverflow.com/search?q=[js]+" + e.message;
}
复制代码
优雅处理Async/Await参数
function AsyncTo(promise) {
    return promise.then(data => [null, data]).catch(err => [err]);
}
const [err, res] = await AsyncTo(Func());
复制代码
优雅处理多个函数返回值
function Func() {
    return Promise.all([
        fetch("/user"),
        fetch("/comment")
    ]);
}
const [user, comment] = await Func(); // 需在async包围下使用

作者:JowayYoung
链接:https://juejin.im/post/5cc7afdde51d456e671c7e48
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/15864.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/15864.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/gcs/15864.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定