【javascript】 声明函数与函数表达式 的区别

来源:互联网 发布:剑网三淘宝买金 编辑:程序博客网 时间:2024/06/08 14:11

什么是声明函数?

function myFunc(){    // 这里是函数代码}

声明函数必须是以function 开头,再加上函数名称.

特点:

1.在一个页面中, js 解析器会优先解析带有function的 函数,因此如果在一个页面中的script标签内调用该函数,可以不用担心它的位置.情况如下:

<script>var ob = new observable();subscribable.call(observable);console.log(observable._id);function observable(){}function subscribable(){    this._id = 1; // 这里的 this 表示 函数}</script>

2.声明函数会有一些自带的属性,如name属性.

<script>function myFunc(){}console.log(myFunc.name); // 会输出 myFunc 字符串</script>

什么是函数表达式?

var myFunc2 = function(){};

函数表达式,类似与js 赋值变量的写法.myFunc2是一个变量名,它指向了一个匿名的函数.使得这个匿名函数不会游离在我们的使用之外.

特点:

1.函数表达式不同于声明函数,它必须在使用前被定义.以下情况会出现变量 undefined情况.

myFunc(); // 会报错var myFunc = function(){    return true;};
2.函数表达式引用的函数如果是匿名函数,则不会有name属性.而如果引用的是一个声明函数,则name属性为声明函数的名称.

var myFunc = function(){}; console.log(myFunc.name); // 结果为 空字符串function myFunc2(){}myFunc = myFunc2;console.log(myFunc.name); // 结果为 myFunc2

小结:

一般情况下使用函数表达式会比较常见,因为写法与赋予一个变量十分类似.在多变量赋值情况下经常使用函数表达式.

函数声明一般在声明内部函数,创建某一个对象类型会使用,具体情况下具体使用.





0 0