一、javascript里面定义函数的方法
1、函数声明
function ftn(){
代码块;
}
2、函数表达式
var ftn=function(){
代码块;
}
3、 使用Function构造函数(不推荐使用)
var sum = new Function("a","b","return a+b");
二、声明提升
经过上面的知识,我们已经了解javascript中函数的基本写法,下面先抛问题。
(1) ftn();//"Uncaught TypeError: undefined is not a function"
var ftn=function(){
console.log("报错,不打印喽。");
}
(2) ftn();
function ftn(){
console.log("函数声明提升");
}
(1)在调用ftn()函数时会报错,"Uncaught TypeError: undefined is not a function",
(2)在执行中不会报错,
其原因:(1)函数表达式(var ftn = function(){}):这个会产生运行错误,原因在于函数位于一个初始化语句中,而不是一个函数声明,换句话说,在执行到函数所在语句之前,变量ftn不会保存对函数引用。
(2)函数声明(function ftn(){}):代码执行之前,解析器就已经读取函数声明并将其添加到执行环境中。
理解二、声明提升
console.log(n);
var n=100; // var n; n=100;声明提升
打印结果:"undefined" /javaScript/html/声明提升.html (7);
var n=100;
console.log(n);
打印结果:"100" /javaScript/html/声明提升.html (11);
// ftn();
// function ftn(){
// console.log("函数声明提升");
// }
// ftn();//"Uncaught TypeError: undefined is not a function"
// var ftn=function(){
// console.log("报错,不打印喽。");
// } //必须要在函数后面执行ftn();
var相当于提高了声明,var ftn;相当于先提高了声明,其后的function(){},就相当于,n=100,的赋值过程。所以var ftn=function(){},在其前面调用时,报错 undefined is not a function