这个问题可能有点傻,但我只需要知道。下面是我编写的一些非常基本的代码:
function LongestWord(sen) {
var longest = "";
var check = ""; //I've even changes the value of var check into a integer and still returned the same
for(var i = 0; i < sen.length; i++){
check = sen.split(" ");
}
return check;
}
console.log(LongestWord("John Max"));这是返回的内容:[ 'John', 'Max' ]
这是否意味着当对变量调用.split()方法时,不管它是哪种类型,它都会将它转换为数组吗?
发布于 2014-08-04 05:37:45
JavaScript中的变量是动态的;这意味着它们可以在执行脚本期间更改类型。
例如:
var a = 123; // i'm a number value
a = []; // now i'm an array
a = 'hello'; // and now i'm a string当将新值赋值时,任何先前的值都会被丢弃(*)。
尽管如此,您的脚本中的逻辑可以这样编写:
var longest = null;
sen.split(' ').forEach(function(word) {
if (longest === null || word.length > longest.length) {
longest = word;
}
});
return longest;(*)垃圾收集行为在标量和非标量之间是不同的。
发布于 2014-08-04 05:30:39
不,split()是在Javascript中的字符串上定义的一种方法,它返回一个数组,其中包含分裂的单词。
"hello, world".split(",") // returns [hello, world]所以你不能在每一种对象类型上使用它。
发布于 2014-08-04 05:29:53
是的,如果你用字符串调用它。“拆分()方法将字符串对象拆分为字符串数组,方法是将字符串拆分为子字符串。”
准确地说,.split()是一个String方法,所以它可以工作在String对象上。如前所述,它将字符串转换为由传递给.split()的分隔符值分隔的字符串数组。如果将空字符串作为分隔符值传递,则返回包含原始字符串的字符数组。
请参见:“注意:当字符串为空时,split返回一个包含一个空字符串的数组,而不是一个空数组。”
声称不能在非字符串对象上调用它的答案是正确的。在非字符串对象上调用它将导致Uncaught TypeError: undefined is not a function。
例如:
var name = "234";
var newName = name.split("3");
console.log(newName);返回"2“、"4”。
var name = 234;
var newName = name.split("3");
console.log(newName);返回上面的TypeError。
如果坚持对非字符串对象使用.split(),可以使用.call()调用它,通过原型继承访问.split()方法,如下所示。
var name = 234;
var newName = String.prototype.split.call(name, "3");
console.log(newName);这个输出"2","4“到控制台。
https://stackoverflow.com/questions/25112243
复制相似问题