`
topcss
  • 浏览: 100829 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类
最新评论

***** JavaScript 高级编程 之 同名函数的执行顺序 [原创] *****

阅读更多

作者:Topcss QQ419074376 E-mailandpai1.0@gmail.com Time2008-10-20

背景:这是帮一个做教师的朋友写的,用来上课教学。

 

当我们在JavaScript中,要执行一个函数往往都是这样写

 

 

function aa(){

    alert("first function");

};

aa();

 

有人会问能否再简化呢?答案是肯定的!只要你愿意我们还可以通过括号直接调用函数

 

 

(function aa(){

    alert("(function)();");

})();

 

当然,也又别的方法,试试在函数前写上+或者-吧!

 

 

+function aa(){

    alert("+function();");

}();

 

这是,我们浏览器中的代码应该是这样的:

 

 

<html>

    <head>

        <title>JavaScript 高级编程 之 同名函数的执行顺序</title>

        <script language="javascript" type="text/javascript">

            function aa(){

                alert("first function");

            };

            aa();

 

            (function aa(){

                alert("(function)();");

            })();

 

            +function aa(){

                alert("+function();");

            }();

        </script>

    </head>

    <body>

    </body>

</html>

 

现在让我们来想一想浏览器会出现怎样的结果?

 

坐在后排的那哥们儿举手了。听听他怎么说,他说:

浏览器会按照1.first function 2.(function)(); 3.+function(); 方式执行

 

我肯定一定会有很多人这样回答。好的,你可以坐下了。还是让我们去看看执行的结果吧!

 

浏览器结果: 1.+function(); 2.(function)(); 3.+function(); 真是不可思议,为什么呢?

 

难道浏览器会认为在函数前面写+或者-会让函数的执行级别更高?事实并非如此!下面我们再写一个函数,便可以证明这个结论是错误的。

 

 

function aa(){

    alert("last function");

};

 

或许,我们还会有带参的函数需要执行。

 

 

function aa(msg){

    alert(msg);

}

aa("hello topcss!");

 

好了,我们再去看看浏览器是否执行最后一个函数,也就是带参的函数呢。

 

的确,事实正是如此,她执行了最后一个函数。太棒了。

 

现在,我们得出了一个结论:

当我们在一个JavaScript程序中,同时出现多个同名函数时,浏览器会去执行最后一个函数。

 

分享到:
评论
3 楼 mercyblitz 2009-03-10  
JS是字符串解释型语言,自然是后者定义(声明)覆盖前者(声明)。

动态性有时候会造成一定的理解歧义。
2 楼 chenwenxuan 2009-03-09  
js是动态语言,被覆盖调了
1 楼 a275430349 2009-03-09  
oooooo

相关推荐

    java函数使用查询包

    4. **重载(Overloading)**:Java支持函数重载,即在同一个类中可以有多个同名函数,只要它们的参数列表不同(数量、类型或顺序不同)。 5. **匿名函数(Lambda表达式)**:Java 8引入了Lambda表达式,使得函数...

    javascript运行机制之执行顺序理解

    JavaScript的运行机制主要涉及到代码块、函数声明与赋值、预编译期和执行期等核心概念。首先,我们从代码块开始。 1. **代码块**:在JavaScript中,代码块通常指的是由`&lt;script&gt;`标签包裹的代码段。每个`&lt;script&gt;`...

    javascript(课件)

    - **多态**:多态允许不同对象对同一消息作出不同的响应,JavaScript中的多态主要体现在函数的动态绑定上,同一个函数可以根据调用时的对象类型执行不同的行为。 2. **接口与异常处理**: - **接口**:虽然...

    浅谈JavaScript的函数及作用域

    这意味着后来的同名函数定义会覆盖之前的定义。 (二)JavaScript的作用域 作用域决定了变量在何处可见以及它们的生命周期。JavaScript主要有两种作用域: 1. **全局作用域**: 全局变量在整个脚本中都可用,...

    107个常用Javascript语句

    以上只是JavaScript编程中的一部分基础概念,实际上,JavaScript包含更复杂的面向对象特性、事件处理、AJAX异步通信、DOM操作、正则表达式等更多内容。学习JavaScript有助于创建动态、交互性强的网页和应用程序。

    ASP.NET3.5从入门到精通基于C#2008

    ASP.NET3.5是.NET Framework 3.5的重要组成部分之一,引入了许多新特性,如AJAX支持等。 - **ASP.NET与ASP**:ASP.NET相比传统的ASP提供了更好的性能、安全性以及灵活性。ASP.NET采用托管代码执行环境,支持代码编译...

    2021-2022计算机二级等级考试试题及答案No.4748.docx

    - **函数重载概念**:函数重载是指在同一个作用域内,允许存在多个同名函数,只要这些函数的形参列表不同即可。形参列表的不同包括参数的数量不同或者参数类型不同。 ### 24. Python 函数与变量作用域 - **Python ...

    《使用Java实现面向对象编程》阶段测试-笔试试卷.doc

    5. **构造函数的执行顺序**:在Java中,当创建对象时,构造函数会首先执行。在给定的代码中,`Penguin()`构造函数设置了`health`和`sex`的初始值,并打印“执行构造方法”。因此,运行结果是先输出构造方法中的内容...

    2021-2022计算机二级等级考试试题及答案No.11103.docx

    - 创建JavaScript数组的标准语法是使用`new Array()`构造函数。 **2.10 算法的基本特征** - 算法具有可行性、确定性和有穷性三个基本特征。 **2.11 数据表排序** - 打开建立了结构复合索引的数据表时,默认不会...

    2021-2022计算机二级等级考试试题及答案No.10073.docx

    - **知识点**:JavaScript代码执行结果。 - **解析**:题目给出了JavaScript代码,但未提供具体代码内容。一般来说,JavaScript可以用来输出1到10之间的随机数。 ### 25. RAM 功能 - **知识点**:RAM的功能特性。 ...

    2021-2022计算机二级等级考试试题及答案No.17196.docx

    3. **构造函数和析构函数调用顺序**:当类 Y 继承自类 X,创建 Y 类对象时,首先调用 X 类的构造函数,然后是 Y 类的构造函数;删除对象时,顺序相反,先调用 Y 类的析构函数,再调用 X 类的析构函数。 4. **静态...

    对象用法大全(常用对象应用)例程.e.rar

    15. **函数重载与运算符重载**:允许在同一作用域内定义多个同名函数或运算符,但参数列表不同,以实现不同功能。 16. **枚举与常量**:枚举是一种特殊的类,用于定义一组相关的值,常量是不可更改的变量,常用于...

    2021-2022计算机二级等级考试试题及答案No.18479.docx

    - **概念**:在同一个类中可以存在一个以上的同名方法,只要这些方法的参数列表不同(参数个数、参数类型不同)或参数顺序不同即可。 - **正确答案解析**:选项 ACD 正确。选项 B 描述的情况实际上是方法重载的一个...

    2021-2022计算机二级等级考试试题及答案No.11447.docx

    - **定义**: 在Java中,可以在同一个类中定义多个同名的方法,这些方法可以通过不同的参数列表来区分,包括参数的个数、类型或者顺序的不同。这种方法被称为**方法重载**(Overloading)。 - **特点**: - 参数列表...

    2021-2022计算机二级等级考试试题及答案No.19221.docx

    5. **算术运算顺序**:`a+=a-=a*a`首先计算`a*a`,假设a=4,则`a*a`=16,然后`a-=16`,a变为-12,再`a+=-12`,a变为-24。 6. **Word操作**:执行复制命令后,选定的内容会被复制到剪贴板,选C。 7. **客户端脚本...

    2021-2022计算机二级等级考试试题及答案No.3271.docx

    15. **高级语言特性**:高级语言设计得更易于人类理解和编写,与自然语言和数学表达式相似,使得编程更直观。 16. **计算机联网目的**:计算机联网的主要目标是实现数据通信和资源共享。 17. **VB常量与变量声明**...

    2021-2022计算机二级等级考试试题及答案No.14627.docx

    这些方法可以帮助同步线程的执行顺序。因此,正确答案为`wait()`、`notify()`、`notifyAll()`。 ### 12. 字段默认值的存储位置 - **知识点概述**:字段默认值的存储位置。 - **详细解析**:字段的默认值通常存储在...

Global site tag (gtag.js) - Google Analytics