【问题标题】:Is there a difference between assigning a variable to a function in JavaScript vs. using a delegate in C#在 JavaScript 中将变量分配给函数与在 C# 中使用委托之间有区别吗
【发布时间】:2015-04-03 05:35:21
【问题描述】:

在将 JavaScript 变量的属性设置为函数时,除了将变量设置为指向函数代码的指针之外,还有什么特别之处吗?

这不正是 C# 委托的含义吗?

我知道在 JavaScript 中,您可以像这样直接将函数分配给变量:

var x = function() { return "Hello"; }

在 C# 中有点不同:

Func<string> x = () => { return "Hello"; };

但是这些不是等价的吗?直接分配功能不只是糖吗? JavaScript 将“函数作为对象”的概念与 C# 等语言有什么不同吗?

【问题讨论】:

  • 两者都是面向对象的语言,不同的是c#是强类型的,而javascript不是,据我所知它们是等价的
  • JS 和 C# 的匿名函数有一些细微的差别,但是它们非常微妙,很难找到。它们与闭包的处理方式有关...smartik.net/2013/07/… 但最终,除非您尝试做奇怪的事情,否则差异更多的是“如何实现”而不是“使用时如何工作”
  • @bto.rdz 我仍然认为关于 javascript 是一种面向对象的语言存在一些争论,但由于这无关紧要,我已经修改了这个问题。归根结底,它们都是正确的函数指针吗?
  • 您要问什么样的差异?它们是两种完全独立的语言和范式,因此很难看出您希望它们在什么基础上进行比较。此外,关于“不是直接......只是糖”。糖有什么用?
  • @Asad 当我提到糖时,我指的是语法糖。请参阅en.wikipedia.org/wiki/Syntactic_sugar

标签: javascript c# function oop


【解决方案1】:

Javascript 和 C# 可以完成很多相同的任务, 他们有相似的概念和一些非常不同的概念, 我们可以在两种语言中实现一个函数作为对象, 虽然它非常常见、流行且容易,但在 c# 中将委托放入变量中并不常见,因为它在大多数情况下都不太符合语言的标准和准则,但 C# 为此类问题提供了更多解决方案。 至于你的问题,作为对象的 javascript 函数并不是什么新鲜事物,它与任何支持委托的语言相同,但特别是在 javascript 中,它是一个标准功能。

【讨论】:

    猜你喜欢
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    相关资源
    最近更新 更多