与x27之间的差异+';和'';在JavaScript中

与x27之间的差异+';和'';在JavaScript中,javascript,arrays,Javascript,Arrays,我正在尝试运行一个简单的javascript函数,试图学习javascript中的过滤器函数: var-arr=[ {id:15}, {id:-1}, {id:0}, {id:3}, {id:12.2}, { }, {id:null}, {id:NaN}, {id:'未定义'} ]; var无效标识=0; 函数isNumber(obj){ 返回obj!==未定义和类型化(obj)==“编号”&&&&!isNaN(obj); } 功能过滤器BYID(项目){ if(isNumber(item.i

我正在尝试运行一个简单的javascript函数,试图学习javascript中的
过滤器
函数:

var-arr=[
{id:15},
{id:-1},
{id:0},
{id:3},
{id:12.2},
{ },
{id:null},
{id:NaN},
{id:'未定义'}
];
var无效标识=0;
函数isNumber(obj){
返回obj!==未定义和类型化(obj)==“编号”&&&&!isNaN(obj);
}
功能过滤器BYID(项目){
if(isNumber(item.id)&&item.id!==0){
返回true;
} 
无效标识++;
返回false;
}
var arrByID=arr.filter(filterByID);

log(“过滤数组:”,arrByID)
String+Array
将强制数组为String并连接两个字符串


console方法允许使用多个参数(由
)并将分别处理每个参数,因此您可以通过
控制台获得正确的数组输出。log(String,array)

String+array
将数组强制为String并连接两个字符串


console方法允许使用多个参数(由
)并将分别处理每个参数,因此您可以通过
console.log(String,array)
获得正确的数组输出当您执行
console.log(“something”+obj)
时,您实际上是在调用
obj.toString()
将对象转换为字符串,然后将此字符串与第一个字符串(位于
+
左端的字符串,即我的示例中的
“something”
)连接起来

但是,当您执行
console.log(“something”,obj)
时,您将独立地记录字符串和对象
obj
不会转换成字符串。因此,
console.log
确实可以以不同的方式显示它。例如,它可能允许您检查对象


对象在日志中的显示方式取决于
控制台.log
的实现。在不同的浏览器或node.js中可能会有所不同。

当您执行
console.log(“something”+obj)
时,实际上是调用
obj.toString()
将对象转换为字符串,然后将该字符串与第一个字符串(位于
+
左端的字符串)连接起来,即
“something”
在我的示例中)

但是,当您执行
console.log(“something”,obj)
时,您将独立地记录字符串和对象
obj
不会转换成字符串。因此,
console.log
确实可以以不同的方式显示它。例如,它可能允许您检查对象

对象在日志中的显示方式取决于
控制台.log
的实现。在不同的浏览器或node.js中可能会有所不同。

“+”连接起来,因为第一个参数(“过滤数组:”)是一个字符串 因此,它将第二个参数看作字符串。 例如,console.log(1+2)返回3,但console.log(“1”+2)返回12。

“+”连接,因为第一个参数(“过滤数组:”)是字符串 因此,它将第二个参数看作字符串。
例如,console.log(1+2)返回3,但console.log(“1”+2)返回12。

console.log
接受多个参数并记录每个参数。如果记录对象,chrome将显示活动对象以供检查。当你用一个字符串连接它时,它被转换成一个字符串,只记录一个字符串。(真正的问题是为什么你认为
+
是一样的!)
控制台。log
接受多个参数并记录每个参数。如果记录对象,chrome将显示活动对象以供检查。当你用一个字符串连接它时,它被转换成一个字符串,只记录一个字符串。(真正的问题是为什么你认为
+
是一样的!)