javascript Uncaught TypeError: s is not a function。调用函数未定义问题。看完这篇你就懂了
我们来定义一个函数表达式var s = function(){console.log("我被执行了");}接下来调用s();是不是没问题。那我们换一种姿势再试一次;什么情况?为啥报错了。是不是有点疑惑。调用的函数。放到函数表达式前,就报错了。找不到此函数。这是因为函数存在提升问题。函数表达式不存在提升。也就是说。如果定义一个函数而非函数表达式操作以上步骤是没问题的我们来试下。所以如果定义函数表达式
·
我们来定义一个函数表达式
var s = function(){
console.log("我被执行了");
}
接下来调用
s();

是不是没问题。那我们换一种姿势再试一次;

什么情况?为啥报错了。是不是有点疑惑。调用的函数。放到函数表达式前,就报错了。找不到此函数。
这是因为函数存在提升问题。函数表达式不存在提升。也就是说。如果定义一个函数而非函数表达式操作以上步骤是没问题的
我们来试下。

所以如果定义函数表达式。我们一定要放在调用方法之前。因为函数表达式不存在提升
顺便解释下什么是提升:
引擎会在解释JavaScript代码之前首先进行编译,编译过程中的一部分工作就是找到所有的声明,并用合适的作用域将他们关联起来,这也正是词法作用域的核心内容。
还有就是定义函数最好不要放在$(function(){})里。如果在外部调用函数。肯定会报未定义。因为在此定义函数。是个局部函数。所以在外部肯定调用不到的

更多推荐

所有评论(0)