Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何是';功能';(不是Javascript中定义的函数';)?_Javascript_Function - Fatal编程技术网

如何是';功能';(不是Javascript中定义的函数';)?

如何是';功能';(不是Javascript中定义的函数';)?,javascript,function,Javascript,Function,我碰巧注意到Javascript也像ActionScript一样支持函数关键字。由于两者都是从ECMA脚本中派生出来的,所以这种相似性的存在是一个常识。但是我很好奇函数在Javascript中代表什么,如果不是类的话(如as3) 在JS中 var func=new Function()或var func=新函数 将名为“anonymous”的函数指定给变量“func” 它是否只是一种以面向对象的方式实现实际“功能”的方法 由于大多数浏览器(ff、ie和chrome)似乎都以相同的方式实现它,所以

我碰巧注意到Javascript也像ActionScript一样支持
函数
关键字。由于两者都是从ECMA脚本中派生出来的,所以这种相似性的存在是一个常识。但是我很好奇函数在Javascript中代表什么,如果不是类的话(如as3)

在JS中

var func=new Function()
var func=新函数

将名为“anonymous”的函数指定给变量“func”

它是否只是一种以面向对象的方式实现实际“功能”的方法

由于大多数浏览器(ff、ie和chrome)似乎都以相同的方式实现它,所以它是否在规范中得到了解决?

是所有功能扩展的“类”。所有函数实际上都是
函数
对象

(function(){}) instanceof Function === true
您还可以使用
newfunction
从字符串生成函数(如
eval

1路:

第二种方式:

function Person() {
    this.name;
    this.age;
}

var p1 = new Person();
“JavaScript中的每个函数实际上都是一个函数对象。”

本质上等于

var myFunc = new Function('a', 'b', 'console.log( "test" )');

但是,声明函数的两种方法之间存在一些差异。看医生

检查此链接[链接]
功能
实际上不是一个关键字。它只是一个标识符,用作对象构造函数的名称。函数是对象,但创建它们时允许使用不同的语法。此处:@FelixKling正是我要查找的内容…这是关于函数表达式和函数声明的,而不是关于函数构造函数的。这不是问题所问的。您在上一个示例中忘记了一些引号。它们必须是构造函数的独立字符串参数,而不是逗号分隔的字符串。@系统:它们可以是/或:-)请参阅中的注释,真的吗?我道歉。我从来不知道。@thesystem:不知道。也允许使用逗号分隔的字符串。请参阅和注释。@RocketHazmat好吧,不管JS的“无类”行为发生了什么。。。谢谢:)它们非常相似,但有一些重要的区别。一是第一个语法将是“highed”。但更重要的是,第二种语法将在全局变量范围而不是局部变量范围内进行计算。JS解释器在内部不使用构造函数。谢谢@系统,请通过重新阅读相关文档来澄清这一点。编辑了我的答案。
function Person() {
    this.name;
    this.age;
}

var p1 = new Person();
function myFunc(a, b) {
  console.log( 'test' );
}
var myFunc = new Function('a', 'b', 'console.log( "test" )');