有没有更快的方法来编写条件语句?

发布于 2024-10-03 04:53:14 字数 201 浏览 4 评论 0 原文

我有这样的声明:

 if(window.location.hash != '' && window.location.hash != '#all' && window.location.hash != '#')

我可以这样写,这样我只需提及一次window.location.hash吗?

I have a statement like this:

 if(window.location.hash != '' && window.location.hash != '#all' && window.location.hash != '#')

Can I write it so I only have to mention window.location.hash once?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

涙—继续流 2024-10-10 04:53:14

显而易见的方法是:

var h = window.location.hash;
if (h != '' && h != '#all' && h != '#')

the obvious way to do this is:

var h = window.location.hash;
if (h != '' && h != '#all' && h != '#')
淡莣 2024-10-10 04:53:14

您可以使用 in 运算符和对象文字:

if (!(window.location.hash in {'':0, '#all':0, '#':0}))

这通过测试对象的键来工作(0 只是填充符)。

另请注意,如果您弄乱 object 的原型,这可能会中断

you can use the in operator and an object literal:

if (!(window.location.hash in {'':0, '#all':0, '#':0}))

this works by testing the keys of the object (the 0's are just filler).

Also note that this may break if you are messing with object's prototype

牛↙奶布丁 2024-10-10 04:53:14

正则表达式?不太可读,但足够简洁:

if (/^(|#|#all)$/.test(window.location.hash)) {
    // ...
}

这也有效:

if (window.location.hash.match(/^(|#|#all)$/)) {
    // ...
}

...但根据肯的评论,效率较低。

Regular expression? Not so readable, but concise enough:

if (/^(|#|#all)$/.test(window.location.hash)) {
    // ...
}

This also works:

if (window.location.hash.match(/^(|#|#all)$/)) {
    // ...
}

... but it's less efficient, per Ken's comment.

夜司空 2024-10-10 04:53:14

对于较新的浏览器使用 indexOf ,并为较旧的浏览器提供一个实现,您可以在 此处

// return value of -1 indicates hash wasn't found
["", "#all", "#"].indexOf(window.location.hash)

Use indexOf for newer browsers, and supply an implementation for older browsers which you can find here.

// return value of -1 indicates hash wasn't found
["", "#all", "#"].indexOf(window.location.hash)
你是我的挚爱i 2024-10-10 04:53:14

只是补充一下,因为除了各种各样的不要重复自己的方法之外,没有人提到:

在浏览器中,窗口全局
对象,所以把它剪掉,如果你不这样做
有另一个名为
当前范围内的“location”
(不太可能)。 location.hash 就足够了

Just an addition, because besides quite good variety of do not repeat yourself approaches, nobody mentioned that:

In browsers, window is Global
object, so cut it off, if you dont
have another property named
"location" in the current scope
(unlikely). location.hash is enough

む无字情书 2024-10-10 04:53:14

我认为检查长度是件好事,因为第一个字符始终是哈希值。

var h = location.hash;
if ( h.length > 1 && h != '#top' )

I think it is good to check on length since the first character always is an hash.

var h = location.hash;
if ( h.length > 1 && h != '#top' )
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文