Javascript中字符串的长度始终为1?

时间:2018-01-06 17:59:18

标签: javascript jquery ajax string

所以我有一些非常恼人的问题。我运行的函数基本上是这样的:

function printText(message){
    console.log(message.length);
    console.log(message);
    console.log(message.length);
}

控制台日志中的输出是:

1
Hello World!
1

我知道值为1也是因为我稍后在if语句中测试它。下次我运行该函数时,它会给我正确的字符串长度。但不是第一次。

我通过对本地服务器的AJAX调用获取消息变量。我的意思是,消息看起来应该如此,它怎么能忘记这个属性?我什么都不懂。

JSON调用很有前瞻性:

$.getJSON(sendURL, function(data) {
    printText(data.message);
});

此功能还有其他一些问题。这些字符串是正确的,因为我打印它们但它们的行为并不像它们应该的那样。但我甚至无法解释什么是错的,因为一切似乎都很好,但结果并不正确。

2 个答案:

答案 0 :(得分:1)

输入参数message作为数组传入。当它作为数组传递给printText()方法时,数组的长度将为1.如果输入参数作为字符串或包含字符串的变量传入,则长度将为12。

JSFiddle上查看此代码。打开控制台&运行。那么问题就会变得清晰!

function printText(message){
    console.log(message.length);
    console.log(message);
    console.log(message.length);
}

console.log ('String Test');
printText('Hello World!'); // This will print string length = 12

console.log ('Variable Test');
let message = 'Hello World!';
printText(message); // This will print string length = 12

console.log ('Array Test');
message = ['Hello World!'];
printText(message); // This will print array length = 1

答案 1 :(得分:0)

将值转换为String并尝试获得如下长度:

 console.log(String(message).length);