什么是声明函数?
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
小结:
一般情况下使用函数表达式会比较常见,因为写法与赋予一个变量十分类似.在多变量赋值情况下经常使用函数表达式.
函数声明一般在声明内部函数,创建某一个对象类型会使用,具体情况下具体使用.