2 game life qc Game_Life_qc 于 2016.03.18 14:36 提问

JS函数定义与调用问题

书上说如果在函数定义之前调用函数,执行会出错,可是我自己打代码并没有出错,这是为什么??图片说明

2个回答

qq_19891827
qq_19891827   2016.03.18 15:08
已采纳

这种说法是不对的,那要看你定义函数的方式而定
1、function a(){}
以这种方式定义函数无论定义在调用前后都不会出错。
2. var a=function(){}
以这种方式定义的函数就如书中所说的必须定义在调用前,否则会出错。
会出现这两种不同结果的原因是函数的声明提前导致的。
另外提一点,看你的书上的说法,感觉你的书已经比较老了,有些说法已经过时了,现在不适用了。建议换些最近出版的外文翻译版来看看,这方面来说外国人的观点还是更有说服力的。

qq_19891827
qq_19891827 回复Game_Life_qc: 慢慢看呗,要有信心,好书都这样的
2 年多之前 回复
Game_Life_qc
Game_Life_qc 回复qq_19891827: 看网上说那本是工具书呀1k+页,真不知道我能不能看完![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/64.gif)
2 年多之前 回复
qq_19891827
qq_19891827 回复Game_Life_qc: JavaScript权威指南,俗称‘犀牛书’,百度可以查到的,业界很有名的书。喜欢请采纳谢谢
2 年多之前 回复
Game_Life_qc
Game_Life_qc 回复qq_19891827: 那有什么js书推荐的吗![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif)[图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif)
2 年多之前 回复
Game_Life_qc
Game_Life_qc 回复qq_19891827: 那有什么js书推荐的吗![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif)[图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif)
2 年多之前 回复
Game_Life_qc
Game_Life_qc 回复qq_19891827: 那有什么js书推荐的吗![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif)[图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif)
2 年多之前 回复
Game_Life_qc
Game_Life_qc 回复qq_19891827: 那有什么js书推荐的吗![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif)[图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif)
2 年多之前 回复
Game_Life_qc
Game_Life_qc 回复qq_19891827: 那有什么js书推荐的吗![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif)[图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif)
2 年多之前 回复
fubo1990
fubo1990   2016.03.18 15:16

我觉得你理解错了。调用的前后和你定义函数的位置前后没有关系。页面一进来首先会加载js脚本,但不会调用。当你触发相应事件才会调用相应方法
比如:
点击
<br> function clickMe(){<br> alert(&quot;hello&quot;);<br> }<br> <script><br> 这样不会报错,因为你只有点击按钮时才去找这个方法。是在页面加载以后的操作。而页面加载完后,这个方法已经定义了。</p>

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
JS编程训练 | 题15:正确使用parseInt
JS编程训练 | 题15:正确使用parseInt 题目描述修改 js 代码中 parseInt 的调用方式,使之通过全部测试用例示例1 输入’12’ 输出12 示例2 输入’12px’ 输出12 示例3 输入’0x12’ 输出0
正确的函数定义
请修复给定的 js 代码中,函数定义存在的问题 function functions(flag) {     if (flag) {       function getValue() { return 'a'; }     } else {       { return 'b'; }     }
javascript对象小探之八——函数声明与定义位置要求
在JS中有两种定义函数的方式, 1、var aaa=function(){...} 2、function aaa(){...}  var 方式定义的函数,不能先调用函数,后声明,只能先声明函数,然后调用。   function方式定义函数可以先调用,后声明。 请看代码:                  //aaa();这样调用就会出错
js中函数表达式、函数声明和立即执行函数归纳
js中函数表达式、函数声明和立即执行函数归纳函数声明、函数表达式、匿名函数函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明。函数表达式 var fnName = function () {…};使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式,这是最常见的函数表达式语法形式。匿
#学习笔记#(30)牛客网JS测试题1~20题
1、题目描述 找出元素 item 在给定数组 arr 中的位置  输出描述: 如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1 输入例子: indexOf([ 1, 2, 3, 4 ], 3) 输出例子: 2 代码: function indexOf(arr, item) { var index=-1; for(var i=0;i
WEB前端 -- JS函数的定义与调用方法
JS函数的定义与调用方法 JS函数调用的四种方法:方法调用模式,函数调用模式,构造器调用模式,apply,call调用模式 1.方法调用模式: 先定义一个对象,然后在对象的属性中定义方法,通过myobject.property来执行方法,this即指当前的myobject 对象。 var blogInfo={ blogId:123, blogName:"w
函数定义-问题
这段程序作用  把传进来的num 按位存储到buf[ ]中,然后把高位零进行清除,最后把buf[ ] 进行传递给 全局变量eg:num=000567  -&amp;gt; buf[0]=7;         buf[1]=6;         buf[2]=5;       buf[3]=0;             buf[4]=0;            buf[5]=0;              ...
js的内部类和系统函数
1.js的内部类 javascript中本身有提供一些,可以直接使用的类。这种类就是内部类,主要有: Object/Array/Math/Boolean/String/RegExp/Date/Number 2.内部类分类 从使用的方式看,分为静态类和动态类: 静态类使用:类名.属性/方法//Math window.alert(Math.abs(-12));//打印绝对值动态类使用:var
js面向对象: 有名函数和无名函数的区别
<br />var func = function(){ ... }//这是一个无名函数,func并不是这个函数的名字,而是一个指向这个无明函数的变量 function func(){ ... }//这是一个有名函数,函数名为func<br /> <br />有名函数和无名函数的区别是:有名函数可以先调用,再定义,而无名函数就需要先定义再使用,例如<br /> <br />func(); var func = function(){ ... }<br />这样会产生一个错误<br /
js在控制台中调试的一些函数
console.log(object[, object, ...]) 在控制台输出一条消息。如果有多个参数,输出时会用空格隔开这些参数。 第一个参数可以是一个包含格式化占位符输出的字符串,例如: console.log("The %s jumped over %d tall buildings", animal, count); 上面的例子可以用下面的无格式化占位符输出的代