今天看了几篇关于函数声明和表达式的文章,总结一下。希望有不正确的,大家提提意见。
函数声明 : function get(){alert(1)}
函数表达式 : var a=function(){alert(1)}
他们的执行效果是相同的,主要是总结下一些区别:
一,函数声明可以通过解析器将函数声明放置到执行环境中并放在源代码的顶部
如:get();
function get(){alert(2)}
如果用函数表达式
如:get();
var get=function(){alert(a)}
就会报错"TypeError: undefined is not a function"
二,
~function get(){
alert(1111);
}();
看起来很奇怪,如果去掉前面的~,就会报错 SyntaxError: Unexpected token ),这是因为javascript不允许在函数声明的后面直接加(),而函数表达式没有这个限制。通过~可以解析成函数表达式,在函数声明前面加上『!,+,-』等操作符也是可行的
var get=function(){alert(1111)}(); 这样是不会报错的,但是这样会引入一个get变量,污染环境,也可以可以:
(function(){alert(1111)})()