我可以把所有只需要调用一次的函数都写成 IIFE 吗?
Can I write all the functions that need to be called only one time as IIFE
来自(根据 http://es5.github.io/#x12.4,这似乎是不允许的)
function a () {};
a();
或
var a = function () {};
a();
到
(function () {}) ();
如果 a() 只被调用一次?看起来更简洁
好的,我会 post 我的代码:
const qty = [];
((...setAmt) => {
for (let i of setAmt) {
qty.push(Math.floor(Math.random() * (i + 1)))
}
}) (10, 20, 10, 5, 20, 10, 10, 20, 20, 20);
对
const qty = [];
const generator = (...setAmt) => {
for (let i of setAmt) {
qty.push(Math.floor(Math.random() * (i + 1)))
}
};
generator(10, 20, 10, 5, 20, 10, 10, 20, 20, 20);
这是生成一系列0到i之间的随机整数
我还有一些类似情况下只执行一次的其他函数。
可以,但不应该
iifes 可以写得更快,但读起来慢很多,因为你必须阅读整个函数才能弄清楚它做了什么。当错误开始出现时,这可能是一场噩梦。
代码必须可读和可维护,假设您必须阅读某人的数百行代码,您希望看到到处都是命名函数或 iifes 吗?
下面还有一个更好的方法:
const generateYourPhoneBill = (...args) => [...args].map((v) => Math.floor(Math.random() * (v + 1)));
const lastMonth = generateYourPhoneBill(10, 20, 10, 5, 20, 10, 10, 20, 20, 20);
来自(根据 http://es5.github.io/#x12.4,这似乎是不允许的)
function a () {};
a();
或
var a = function () {};
a();
到
(function () {}) ();
如果 a() 只被调用一次?看起来更简洁
好的,我会 post 我的代码:
const qty = [];
((...setAmt) => {
for (let i of setAmt) {
qty.push(Math.floor(Math.random() * (i + 1)))
}
}) (10, 20, 10, 5, 20, 10, 10, 20, 20, 20);
对
const qty = [];
const generator = (...setAmt) => {
for (let i of setAmt) {
qty.push(Math.floor(Math.random() * (i + 1)))
}
};
generator(10, 20, 10, 5, 20, 10, 10, 20, 20, 20);
这是生成一系列0到i之间的随机整数
我还有一些类似情况下只执行一次的其他函数。
可以,但不应该
iifes 可以写得更快,但读起来慢很多,因为你必须阅读整个函数才能弄清楚它做了什么。当错误开始出现时,这可能是一场噩梦。
代码必须可读和可维护,假设您必须阅读某人的数百行代码,您希望看到到处都是命名函数或 iifes 吗?
下面还有一个更好的方法:
const generateYourPhoneBill = (...args) => [...args].map((v) => Math.floor(Math.random() * (v + 1)));
const lastMonth = generateYourPhoneBill(10, 20, 10, 5, 20, 10, 10, 20, 20, 20);