带有函数的 JavaScript 语法
Javascript syntax with functions
我不确定这是什么意思,也不确定如何正确措辞。
在第一个示例中,我可以将变量放在函数"numbers1.forEach(...("之前,但在第二个示例中,我不能"num.square(("?
function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
var numbers2 = [1, 2, 3, 4, 5], sum = 0;
forEach(numbers2, function(number) {
sum += number;
});
console.log(sum);
// → 15
var numbers1 = [1, 2, 3, 4, 5], sum = 0;
numbers1.forEach(function(number) {
sum += number;
});
console.log(sum);
// → 15
// this works!
但这行不通
var square = function(x) {
return x * x;
};
var num = 12;
console.log(square(num));
// → 144
console.log(num.square());
// → TypeError: undefined is not a function (line 9)
// does not work?
谢谢!
方面,这里没有"魔术"发生。你描述的是两件截然不同的事情。
在第一个示例中,您将Array
传递给自己定义的forEach
方法。在第二个示例中,您调用的forEach
实际上是 Array
上的内置方法(请参阅 MDN(。如果您将forEach
更改为不调用action
,您将看到您的中断,第二个仍然有效。
您可以自己实现此功能。你可以添加一个函数来Number
使你的第二个示例工作(尽管这不是推荐的做法,因为它可能会与未来的JavaScript功能[和许多其他原因]发生冲突或破坏现有功能(:
Number.prototype.square = function() {
return this * this;
};
var num = 12;
var squared = num.square();
alert(squared);
如果从第一个示例中删除forEach
函数,它仍然有效,这是因为 Array 类型具有内置的forEach
函数。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
或者尝试将forEach
函数更改为each
,您将看到它将不再起作用。
您尝试做的是向现有类型添加新方法。这在 JavaScript 中不是好的做法。
的例子之所以有效,是因为JavaScript (ECMAScript5(中的Array
定义了forEach函数。
带有数字的示例不起作用,因为Number
没有定义square
函数。您可以扩展Number
以包含方形函数,如下所示:
Number.prototype.square = function(x) {
return this * this;
};
- Javascript语法向设置发出sessionStorage值
- 函数的Javascript语法
- 如何定义const函数javascript(语法糖)
- Onclick不会启动..可能存在javascript语法问题
- 用jquery替换javascript语法
- 在Javascript语法中:和::和:::有什么区别
- 如何以编程方式查找javascript语法错误的位置
- 这个javascript语法有什么问题
- Chrome 中的 JSX/JavaScript 语法
- Javascript语法 - 我做错了什么
- 用于指定元素 ID 的正确 JavaScript 语法是什么
- 这是什么JavaScript语法
- 带有函数的 JavaScript 语法
- 剃刀中的javascript语法错误
- 解析云代码geoPoint查询Javascript语法
- 在Notepad++中更好地突出显示Javascript语法
- 通用Javascript语法查询
- Joomla2.5框架似乎干扰了javascript语法
- 点击切换Divs/JavaScript语法
- 用于将变量传递给函数的javascript语法