&引用;点函数“;JavaScript中的运算符
我是js的新手,所以请对我温柔:) 我想了解在哪里可以对某个变量使用点运算符(在本例中为数组),以及何时不能。 考虑下面的代码:&引用;点函数“;JavaScript中的运算符,javascript,arrays,function,methods,prototype,Javascript,Arrays,Function,Methods,Prototype,我是js的新手,所以请对我温柔:) 我想了解在哪里可以对某个变量使用点运算符(在本例中为数组),以及何时不能。 考虑下面的代码: //example 1 function f1(x) { return x*x; } console.log(map(f1, [1,2,3,4,5])); console.log([1,2,3,4,5].map(f1)); //example 2 function f2(arr) { return arr; } console.log(f2([1,2
//example 1
function f1(x) {
return x*x;
}
console.log(map(f1, [1,2,3,4,5]));
console.log([1,2,3,4,5].map(f1));
//example 2
function f2(arr) {
return arr;
}
console.log(f2([1,2,3,4,5]));
console.log([1,2,3,4,5].f2());
我知道示例有很大不同,但在示例1中,即使使用array.function(..)
语法,两种打印都可以工作(并且打印相同),而在示例2中,第二种打印会产生错误。
基本上,这两者之间的区别是什么?为什么它只在示例1中起作用
一般来说,我可以在不同的变量类型(数字、布尔值等)上应用此方法吗?
[1,2,3,4,5]
是数组“class”的一个实例,而“class”有方法,这就是为什么下面的代码是有效的:
[1,2,3,4,5].map(f1)
[1,2,3,4,5].f2()
map
方法可以接受任何函数作为参数,并且您正在传入f1
函数。它将在map
函数中执行,并作为独立函数执行
数组“class”没有f2
方法,这就是为什么这是无效代码的原因:
[1,2,3,4,5].map(f1)
[1,2,3,4,5].f2()
这里,
f2
立即执行,是[1,2,3,4,5]
对象的一部分。在第一种情况下,map
被定义为数组的全局函数和公共函数。因此,您可以通过map(arr)
或arr.map(…)
在第二种情况下,因为您只将f2定义为全局函数,这意味着数组无法访问它。在第一个示例中,您正在使用该函数
此函数可以通过两种不同的方式调用(参见文档)
或
第二个示例不起作用,因为类Array
没有名为f2()
的函数来完成其他答案: