我在Vannila JS中制作了一个随机密码生成器,我在下面的代码中遇到了一个未知的问题:
function generatePassword(lower, upper, number, symbol, length) {
let generatedPassword = "";
const typesCount = lower + upper + number + symbol;
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => Object.values(item)[0]
);
// Doesn't have a selected type
if (typesCount === 0) {
return "";
}
// create a loop
for (let i = 0; i < length; i += typesCount) {
typesArr.forEach((type) => {
const funcName = Object.keys(type)[0];
generatedPassword += randomFunc[funcName]();
});
}
const finalPassword = generatedPassword.slice(0, length);
return finalPassword;
}
在这段代码中,如果将语句括在大括号{}中,则Object.values(item)[0]不起作用:
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => Object.values(item)[0]
);
我不明白为什么会发生这种情况,我试着搜索文档,但没有用,谢谢!
为了使过滤器功能正确工作,它需要返回。虚假值的真实性。
当你写得像
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => Object.values(item)[0]
);
结果隐式返回,即Object.values(item)[0]是一个返回值
但是如果你这样写的话
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => { Object.values(item)[0] }
);
您还没有从filter函数返回任何值,您需要为它添加一个return语句,如
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => { return Object.values(item)[0]; }
);
创建函数还有另外一种非常简单的语法,并且这种方法通常比函数表达式更好。 它被称为“箭头函数”,因为它看起来像这样: let func = (arg1, arg2, ...argN) => expression ……这里创建了一个函数 func,它接受参数 arg1..argN,然后使用参数对右侧的 expression 求值并返回其结果。 换句话说,它是下面这段代码的更短的版本: let func
不鼓励将箭头函数(“lambdas”)传递给 Mocha。Lambdas词法绑定 this,无法访问 Mocha 上下文。例如,以下代码将失败: describe('my suite', () => { it('my test', () => { // should set the timeout of this test to 1000 ms; instead will fail thi
ES6标准新增了一种新的函数:Arrow Function(箭头函数)。 为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: function (x) { return x * x; } 在继续学习箭头函数之前,请测试你的浏览器是否支持ES6的Arrow Function: 'use strict'; ---- var f
我想知道是否有人能解释一下:
新的“胖箭头”符号还可以用更简单的方式来定义匿名函数。 请看下面的例子: console.log(x); incrementedItems.push(x+1); }); 计算一个表达式并返回值的函数可以被定义更简单: 下面代码与上面几乎等价: incrementedItems = items.map(function (x) { return x+1; 让我们在 验
箭头函数: 正规函数 这两个结果应该是相同的,但是看起来像上面定义的arrowFunc考虑第一个arg列表,而normalFunc考虑第二组arg列表。