2016-08-18 71 views
-2

我知道string.split()不会,但我尝试了解某人作出反应的应用程序,和我碰到这样的:string.split是做什么用的?

newStr = newStr.split ? newStr.split(' ').reverse().join(' ') : newStr; 
+1

你试过了吗?输入''foo bar'.split('').reverse()。join('')'到控制台中。如果你知道'.split'是什么,那么究竟是什么让你感到困惑? –

+0

这是一个常见的技巧问题,在面试中问lol –

+0

提示:它正在执行'str.split'而不是'str.split()' – slebetman

回答

3

在这种情况下,newStr.split正在测试,看看newStr是否具有.split属性 - 如果它的确如此,它假设它是一种方法并且调用.split(' ').reverse().join(' ')(颠倒单词的顺序),否则它将不变地返回newStr

该代码将导致一个错误,如果是newStrnullundefined,或者如果它是一些对象,具有一个.split属性不是返回的数组的函数。

(如BERGI提到过)会更有意义,直接测试的newStr类型:

newStr = typeof newStr === "string" ? newStr.split(' ').reverse().join(' ') : newStr; 

// OR 
if (typeof newStr === "string") newStr = newStr.split(' ').reverse().join(' '); 
+0

...这有点奇怪,'if(typeof newStr ==“string”))newStr = newStr.split()。...;'会更合适。 – Bergi

0

它反转输入“句子”串的话。如果输入没有split方法或者没有任何空格,它将返回原始输入。

+1

称它为“句子”听起来像片段会关心标点符号,它不会:-) – Bergi

相关问题