gpt4 book ai didi

javascript - 这可以写在switch语句中吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:02:14 25 4
gpt4 key购买 nike

我正在编写一个 Safari 扩展程序,并且想检测我当前所在的页面 (url),并相应地执行操作。

现在我的代码看起来像这样:

if (linkHas("facebook.com")) {...}
else if (linkHas("google.com")) {...}
else if (linkHas("yahoo.com")) {...}

其中 linkHas() 是一个函数,如果它有参数则基本上返回 1,否则返回 0。

是否可以编写一个单独的 switch 语句?我在某处读到,如果有 5 个以上的选项,则 switch 语句将实现为哈希表。对于像我这样的小脚本,速度在这里可能并不重要,我真的只是将其作为练习来尝试。

最佳答案

简单而直接的答案是

switch 表达式必须是/返回一个值,该值根据每个 case 的值进行评估。正如 JCOC611 实际演示的那样,它可以完成,但我求求你,不要:)

可能 绝对是实现您所追求的更好的方法,但这不是您的问题,所以我就此打住。

编辑

其实,让我告诉你一个更好的方法。

function doFacebookStuff() {
console.log('Hello Facebook!');
}

function doGoogleStuff() {
console.log('Hello Google!');
}

function doYahooStuff() {
console.log('Hello Yahoo!');
}

var domainActions = {
'facebook.com': doFacebookStuff,
'google.com': doGoogleStuff,
'yahoo.com': doYahooStuff
}

var matched = Object.keys(domainActions).filter(function(domain) {
if (linkHas(domain)) {
domainActions[domain]();
return true;
}
});

console.log('matched domains:', matched);

您还可以将 .filter() 替换为 .some(),使其在找到第一个匹配项时停止。

关于javascript - 这可以写在switch语句中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33882789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com