javascript-JS函数定义与调用问题

问题描述

JS函数定义与调用问题

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

解决方案

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

解决方案二:

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

时间: 2024-09-17 04:04:26

javascript-JS函数定义与调用问题的相关文章

javascript中函数作为参数调用的方法_javascript技巧

本文实例讲述了javascript中函数作为参数调用的方法.分享给大家供大家参考.具体分析如下: 先来看示例: function Map(){ var obj = {}; this.put = function(key, value){ obj[key] = value; } this.eachMap = function(fn){ for(var attr in obj){ fn(attr, obj[attr]); } } } var m = new Map(); m.put('01', 'a

浅谈JS函数定义方式的区别_javascript技巧

关于JS的函数定义方式有以下两种: (1)典型的函数声明 function slide(arguments){ //...code } (2)以函数表达式的形式定义函数 var slide = function(arguments){ //...code } 虽然上面两种方式逻辑上是等价的,但是还是有点小区别: 区别一:例一中的函数会在代码执行以前被加载到作用域中,而例二则是在代码执行到那一行的时候才会有定 义: 区别二:函数声明会给函数指定一个名字,而函数表达式则是创建一个匿名函数,然后将这个

JS函数定义方式的区别介绍_基础知识

关于JS的函数定义方式有以下两种: (1)典型的函数声明 function slide(arguments){ //...code } (2)以函数表达式的形式定义函数 var slide = function(arguments){ //...code } 虽然上面两种方式逻辑上是等价的,但是还是有点小区别: 区别一:例一中的函数会在代码执行以前被加载到作用域中,而例二则是在代码执行到那一行的时候才会有定 义: 区别二:函数声明会给函数指定一个名字,而函数表达式则是创建一个匿名函数,然后将这个

JavaScript之函数定义以及类型

今天在网上做到一道面试题,代码如下: var f = function g() { return 23; }; typeof g(); 问:以上代码的输出结果是() A "number" B "undefined" C "function" D Error 我第一反应选择的答案是A/C.然而正确答案是D 于是乎,我非常郁闷,就在自己的编译器上输入代码,亲自测试答案的正确性: 结果如下: 原来编译器真的是报错,上网查了查,才发现其中的奥秘. 在 J

javascript面向对象编程:js类定义函数时prototype和this的区别

在面向对象编写js脚本时,定义实例方法主要有两种 如下: function ListCommon2(afirst) { var first=afirst; this.do1=function () { alert("first do"+first); } } ListCommon2.prototype.do2=function() { // alert("first do"+first);//会出错,不能访问first this.do1(); } this.do1=

浅谈js函数的多种定义方法与区别_javascript技巧

定义一个函数一般有如下三种方式: 1.函数关键字(function)语句: function fnMethodName(x){ alert(x); } 2.函数字面量(Function Literals): var fnMethodName = function(x){alert(x);} 3.Function()构造函数: var fnMethodName = new Function('x', 'alert(x);') 上面三种方法定义了同一个方法函数fnMethodName,第1种就是最常

深入分析javascript函数定义与函数作用域

1.函数的定义 1.1:函数声明 1.2:函数表达式 1.3:命名函数的函数表达式 1.4:函数的重复声明 1.5:不能在条件语句中声明函数 2.函数的部分属性和方法 2.1:name属性 2.2:length属性 2.3:toString()方法 3.函数作用域 3.1:全局作用域和局部作用域 3.2:函数内部的变量提升 3.3:函数自身的作用域     1.函数的定义 1.1:函数声明 函数就是一段可以反复调用的代码块.函数声明由三部分组成:函数名,函数参数,函数体.整体的构造是functi

JS经典源码:通用javascript脚本函数库

javascript|js|函数|脚本 javascript在WEB编程中能起到很大的作用,将一些常用的功能写成javascript类库. 将下面代码保存为Common.js 类库功能: 1.Trim(str)--去除字符串两边的空格 2.XMLEncode(str)--对字符串进行XML编码 3.ShowLabel(str,str)--鼠标提示功能(显示字符,提示字符) 可以设置显示的提示的文字的字体.颜色.大小以及提示的背景颜色.边框等 4.IsEmpty(obj)--验证输入框是否为空 5

iframe子父页面调用js函数示例_javascript技巧

1.iframe子页面调用父页面js函数 子页面调用父页面函数只需要写上window.praent就可以了.比如调用a()函数,就写成: 复制代码 代码如下: window.parent.a(); 子页面取父页面中的标签中的值,比如该标签的id为"test",则: 复制代码 代码如下: window.parent.document.getElementById("test").value; jQuery方法为: $(window.parent.document).c