函数声明(statement)在技术上也是函数表达式吗?

时间:2017-05-06 19:55:33

标签: javascript function expression declaration

表达式的简单定义是“解析为值的东西”。 语句的简单定义是“可执行的代码块”。

考虑到这一点,由于下面的这个函数解析为值为6,这是否也使它成为表达式,而不是语句,或两者兼而有之?

function ii () {
return 6;
}
ii();

2 个答案:

答案 0 :(得分:2)

函数声明定义函数应该做什么,如下所示:

class GenreSerializer(serializers.ModelSerializer):
    class Meta:
        model = Genre
        fields = ('GenreTitle', 'GenreDescription', 'GenreImage')

当调用该函数时,它变为函数表达式:

function ii () {
  return 6;
}

您还可以根据声明获得函数表达式,如下所示:

if ( ii() ) {
    console.log("true"); 
}
else
{
   console.log("false");
}

以下表示另一种表达式,a的值是指示的函数声明:

(function iii () {
  console.log(3);
  }()
 )

关于这个主题的有趣读物是here

答案 1 :(得分:1)

根据您自己的推荐,。函数本身不解析任何东西,它只返回一个已经解析的值。这只是一个声明。

您正在定义该功能。这使它成为一个声明。是的,你可以说调用函数“解析”它到输出,但它只触发输出。

值更像是表达式。它不是可执行的,只是

getter既是表达式又是声明:

Object.defineProperty(window, "ii", { get: function () { return 6 }});
// Returns '6'
ii;

ii = 7; 
// Logs '6' because setting 'ii' does not change the resolution function.
console.log(ii);