JavaScript中的第一类函数和C+中的函数声明+; 我来自一个C++背景,但想了解JavaScript中的函数。我的问题是粗体的 在C++中,函数声明和定义是不同的。我所收集的是JavaScript中的函数声明是C++中的函数定义,因此C++中没有用C++函数样式声明。strong>这是否正确?

JavaScript中的第一类函数和C+中的函数声明+; 我来自一个C++背景,但想了解JavaScript中的函数。我的问题是粗体的 在C++中,函数声明和定义是不同的。我所收集的是JavaScript中的函数声明是C++中的函数定义,因此C++中没有用C++函数样式声明。strong>这是否正确?,javascript,c++,Javascript,C++,我在JavaScript中尝试了C++风格的函数声明: function randomFunction(arg1, arg2); 并得到一个错误: function randomFunction(arg1, arg2); ^ SyntaxError: Unexpected token ';' 现在,如果在JavaScript中,一级函数意味着函数可以被视为变量,为什么我们不能编写如下函数: function random

我在JavaScript中尝试了C++风格的函数声明:

function randomFunction(arg1, arg2);
并得到一个错误:

function randomFunction(arg1, arg2);
                                   ^

SyntaxError: Unexpected token ';'
现在,如果在JavaScript中,一级函数意味着函数可以被视为变量,为什么我们不能编写如下函数:

function randomFunction(arg1, arg2);
但我们能做到吗?

let var1;
在这种情况下,函数似乎不像变量我错过了什么?

let var1;

我觉得,用<代码>让VAR1,JavaScript不知道要分配多少空间,这将类似于C++中的函数声明。strong>是否因为函数提升而不需要函数声明?


我可能误解了C++和JavaScript,希望能得到一些解释。p> 一个定义同时做这两件事,它声明函数(使签名为人所知)并定义函数(提供实现)。在JavaScript中,由于您有吊装,所以没有单独的声明,在C++中,您需要单独的声明,在某些情况下,因为函数在声明之前不知道/不能使用。p> 命名函数类似于变量,因为您可以更改函数名称所引用的内容,并定义该名称的作用域:

(函数(){
“严格使用”
函数随机函数(arg1,arg2){}
随机函数=1;
console.log(随机函数)

})()
定义两者兼有,它声明函数(使签名为人所知)并定义函数(提供实现)。在JavaScript中,由于您有吊装,所以没有单独的声明,在C++中,您需要单独的声明,在某些情况下,因为函数在声明之前不知道/不能使用。p> 命名函数类似于变量,因为您可以更改函数名称所引用的内容,并定义该名称的作用域:

(函数(){
“严格使用”
函数随机函数(arg1,arg2){}
随机函数=1;
console.log(随机函数)

})()
您无法将静态类型的编译语言与非常动态的解释语言进行比较。您不能在JavaScript中定义函数,因为变量可以保存任何类型的值(函数只是对象只是值),而在C++中,变量的持有值(标识符引用)必须是编译已知的。
 var randomFunction = 1; // the variable holds a value of type number

 randomFunction = function(arg1, arg2) { // now it holds a value of type object (function)
   //...
 };
JavaScript中的函数声明只是声明变量并将函数分配给它的另一种方式。当环境记录初始化时(在任何其他代码运行之前),会发生这种情况,这称为:


不能将静态类型的编译语言与动态解释语言进行比较。您不能在JavaScript中定义函数,因为变量可以保存任何类型的值(函数只是对象只是值),而在C++中,变量的持有值(标识符引用)必须是编译已知的。
 var randomFunction = 1; // the variable holds a value of type number

 randomFunction = function(arg1, arg2) { // now it holds a value of type object (function)
   //...
 };
JavaScript中的函数声明只是声明变量并将函数分配给它的另一种方式。当环境记录初始化时(在任何其他代码运行之前),会发生这种情况,这称为:


函数就像变量一样,你可以做一些事情,比如
let myFunction;myFunction=函数(arg1,arg2){….}它没有像c++@Ron这样的前向声明,是的,它们是不相关的,但是比较和对比它们有助于阐明它们各自的优势和独特特性。它对人类语言也有帮助。函数就像变量一样,你可以做一些事情,比如
let myFunction;myFunction=函数(arg1,arg2){….}它没有像c++@Ron这样的前向声明,是的,它们是不相关的,但是比较和对比它们有助于阐明它们各自的优势和独特特性。它对人类语言也有帮助。我不理解最后一个短语“关于…”和第二个代码段,它们看起来与第一个类似。@heretoinfinity
function randomFunction(arg1,arg2){}
定义了一个名为
randomFunction
的函数,但是,与C++ <代码>相反,随机化函数在JavaScript中的行为就像一个变量,所以你可以改变什么值<代码>随机函数< /代码>。抱歉,我没看到。我需要喝咖啡。我不明白最后一句话“关于…”和第二个代码段,看起来与第一个类似。@heretoinfinity
function randomFunction(arg1,arg2){}
定义了一个名为
randomFunction
的函数,但是,与C++ <代码>相反,随机化函数在JavaScript中的行为就像一个变量,所以你可以改变什么值<代码>随机函数< /代码>。抱歉,我没看到。我需要喝咖啡。你能解释一下我应该从第二段代码中得到什么吗?我理解1st@geretoinfinity它应该显示提升和函数声明是什么。你说的“勉强相等”是什么意思?你能解释一下我应该从第二段代码中得到什么吗?我理解1st@geretoinfinity它应该显示提升和函数声明是什么。你说的“勉强相等”是什么意思?