Javascript string.split做什么?

Javascript string.split做什么?,javascript,Javascript,我知道string.split()的作用,但我试图理解一些人对应用程序的反应,我遇到了以下问题: newStr = newStr.split ? newStr.split(' ').reverse().join(' ') : newStr; 在这种情况下,newStr.split正在测试newStr是否有.split属性-如果有,它将假定它是一个方法并调用.split(''.reverse().join(')(颠倒单词顺序),否则它将返回newStr 如果newStr为null或undefin

我知道string.split()的作用,但我试图理解一些人对应用程序的反应,我遇到了以下问题:

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

在这种情况下,
newStr.split
正在测试
newStr
是否有
.split
属性-如果有,它将假定它是一个方法并调用
.split(''.reverse().join(')
(颠倒单词顺序),否则它将返回
newStr

如果
newStr
null
undefined
,或者如果某个对象的
.split
属性不是返回数组的函数,则该代码将导致错误

(如Bergi所述)直接测试
newStr的类型更有意义:

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

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

它反转输入“句子”字符串中的单词。如果输入没有
split
方法或没有任何空格,则返回原始输入

你试过了吗?键入
'foo bar'。拆分(“”).reverse()。将(“”)
连接到控制台中。如果你知道
.split
做什么,那么到底是什么让你困惑呢?这是采访中常见的一个技巧性问题。提示:它在做
str.split
而不是
str.split()
如果它包含空格,它看起来应该拆分字符串。如果你知道
split
做什么,你不明白语句的哪一部分?…这有点奇怪,
if(typeof newStr==“string”))newStr=newStr.split()会更合适。将其称为“句子”听起来像是该代码片段会关心标点符号,而它不关心:-)