带有退货声明的单线

时间:2014-11-24 20:34:21

标签: javascript

有没有办法将下面的JavaScript代码写成一行?

this.isContactPage = (window.location.pathname === '/contact');
if (!this.isContactPage) return false;

如果this.isContactPage为真,则该方法继续。

脚本中的其他位置需要属性this.isContactPage

5 个答案:

答案 0 :(得分:5)

return !(this.isContactPage = (window.location.pathname === '/contact'));

另一个例子:

console.log(window.prop); // undefined
console.log(!(window.prop = true) || undefined); // undefined
console.log(!(window.prop = true)); // false
console.log(window.prop); // true

答案 1 :(得分:2)

这将是相当密集和“模糊”的代码,但您可以在条件中内联分配:

if ( !this.isContactPage = ( window.location.pathname == '/contact' ) ) return false;

如果为this.isContactPage赋值false,则只会返回该函数,否则函数不会返回并继续执行,而不是:

return ( this.isContactPage = ( window.location.pathname == '/contact' ) );

会立即返回truefalse

答案 2 :(得分:1)

return !this.isContactPage = (window.location.pathname === '/contact')

答案 3 :(得分:1)

这样你就不会有错误!

this.isContactPage = /contact/gi.test(window.location.pathname);
if (!this.isContactPage) return false;

return !(/contact/gi.test(window.location.pathname))

答案 4 :(得分:1)

我有一些东西让你的代码尽可能短!

return !(this.isContactPage=location.pathname=='/contact')
  1. 你不需要" Window"
  2. 您不需要直接通过代码返回false或true
  3. 您不需要===,然后将其更改为== 人们建议的最短路径有88个字母,这个建议只有68个字母,更具可读性和可理解性!