javaScript简介
Javascript和JQuery的优缺点

一、JavaScript:1.简介:javaScript的简写形式就是JS,是用于客户端Web开发的一种脚本语言,常用来给HTML 网页添加动态功能。
JavaScript目前被广泛地应用于Web开发中,随着HTML5技术的发展,JavaScript在未来还将有更大的发展和应用空间。
行业分析机构RedMonk近期的一份调查显示,JavaScript目前在最受欢迎编程语言排行榜中排名第一。
2.优点:∙性能:由于JavaScript运行在客户端,节省了web服务器的请求时间和带宽∙轻量级的脚本语言,比较容易学习∙运行在用户机器上,运行结果和处理相对比较快。
∙可以使用第三方附加组件来检查代码片段。
3.缺点:∙安全问题:由于JavaScript在客户端运行,可能被用于黑客目的。
∙渲染问题:在不同浏览器中的处理结果可能不同。
二.JQuery1.简介:jQuery是JavaScript的框架,是js封装库。
JQuery基于JS语言,封装JS的原生方法功能,提供了简便的函数接口,简化了JS的操作。
JQuery是在JS原生的基础上封装定义了简便的功能,提高前端的开发熟读,降低开发难度。
与JavaScript相比,jQuery的语法更加简单。
通过jQuery,可以很容易地浏览文档、选择元素、处理事件以及添加效果等,同时还允许开发者定制插件。
2.优点:∙jQuery消除了JavaScript跨平台兼容问题。
∙相比其他JavaScript和JavaScript库,jQuery更容易使用。
∙jQuery有一个庞大的库/函数。
∙jQuery有良好的文档和帮助手册。
∙jQuery支持AJAX。
3.缺点:∙由于不是原生JavaScript语言,理解起来可能会受到限制。
∙项目中需要包含jQuery库文件。
如果包含多个版本的jQuery库,可能会发生冲突。
JavaScript简介

JavaScript简介JavaScript语言的前身称作Livescript。
自从Sun公司推出著名的Java语言之后,Netscape公司引进了Sun公司有关Java的程序概念,将自己原有的Livescript重新进行设计,并改名为JavaScript。
JavaScript是一种一种解释性的、基于对象和事件驱动并具有安全性能的脚本语言,既可以用在客户端有可以用在服务器端,主要用在客户端,有了JavaScript,可使网页变得生动。
使用它的目的是与HTML超文本标识语言、Java脚本语言一起实现在一个网页中链接多个对象,与网络客户交互作用,从而可以开发客户端的应用程序。
它通过嵌入或调入在标准的HTML语言中实现。
JavaScript通过嵌入或调入在标准的HTML语言中实现。
它的出现弥补了HTM L语言的缺陷,它是Java与HTML折衷的选择,具有以下几个基本特点:(1)简单性JavaScript是一种脚本编写语言,它采用小程序段的方式实现编程,像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个简易的开发过程。
它的基本结构形式与C、C++、VB、Delphi十分类似。
但它不像这些语言一样,需要先编译,而是在程序运行过程中被逐行地解释。
它与HTML标识结合在一起,从而方便用户的使用操作。
(2)动态性JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。
它对用户的反映响应,采用以事件驱动的方式进行。
所谓事件驱动,就是指在主页中执行了某种操作所产生的动作,就称为“事件”。
比如按下鼠标、移动窗口、选择菜单等都可以视为事件。
当事件发生后,可能会引起相应的事件响应。
(3)跨平台性JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可以正确执行。
(4)节省CGI的交互时间随着WWW的迅速发展有许WWW服务器提供的服务要与浏览者进行交流,这项工作通常由CGI/PERL编写相应的接口程序与用户进行交互来完成。
04_第8章_JavaScript简介

31
上框架包含的标题网页 “header.htm”文件的代码
<HTML> <HEAD> <TITLE>标题网页</TITLE> <BASE target="main"> </HEAD> <BODY> <P> <A href="libai.html">李白诗选</A> <A href="">友情链接</A> </P> </BODY> </HTML>
n 粗体、斜体、下划线
o <H1>~ <H6> o 标题一~标题六,从大到小 o <FONT>
n 字体
o <BIG> <SMALL>
n 字体加大、字体缩细
13:53 20
超级链接
o <A>
n 设置文字、图、表格等对象的超级链接目标 n HREF属性必须,用于指明链接目标
o 例: <A HREF=> 华 东
39
L8-5.js的内容及执行效果
o document.write("我是L8-5.js,确实 被加载和执行了。");
13:53
40
HTML中嵌入JavaScript代码
o “JavaScript:”,在HTML的链接标签中直接 引入JavaScript的简短程序代码
n 将程序代码放置在事件名称后面,在事件发生时执行 JavaScript 代码或调用 JavaScript 函数。 <SELECT name="site" onChange ="javascript: i=3"> o 表示在对象值改变时,执行JavaScript 代码,将i 的值变成3 n 配合HTML的链接标签使用,链接到某个脚本代码, <a href="javascript:alert('这是消息')"> 测试</a> o 则在点击文字“测试”时,弹出信息框“这是消息”
JavaScript基础PPT课件

事件类型、监听和传播方式讲解
事件类型 JavaScript中支持多种事件类型,包括鼠标事件、键盘事 件、表单事件、窗口事件等。每种事件类型都对应一个特 定的触发条件和处理方式。
事件监听 可以使用`addEventListener`方法为元素添加事件监听器, 当指定的事件发生时,会调用监听器中的回调函数处理事 件。
移动端适配与优化
探讨针对不同设备和浏பைடு நூலகம்器的 JavaScript代码适配与优化策略, 提高页面性能和用户体验。
行业发展趋势预测
ES6+新特性
01
分析ECMAScript 6及以后版本的新特性和发展趋势,如模块化、
异步编程、装饰器等。
前端框架与库
02
探讨React、Vue等前端框架以及配套库在Web开发中的应用和
和3D游戏。
移动应用开发
通过React Native、Cordova 等框架,可以使用JavaScript
开发跨平台的移动应用。
服务器端开发
Node.js使得JavaScript可以在 服务器端运行,处理HTTP请
求、数据库操作等。
02
JavaScript基础知识
变量与数据类型
变量声明
使用`var`、`let`或`const`关键字声明 变量,分别表示可变变量、块级作用 域可变变量和常量。
逻辑运算符
用于进行逻辑运算,包括`&&`、 `||`和`!`。
流程控制语句
01
02
03
条件语句
使用`if`、`else if`和`else` 关键字实现条件判断。
循环语句
包括`for`、`while`和 `do...while`循环,用于重 复执行某段代码。
高手进阶第4章 JavaScript简介

1
什么是JavaScript
2
编辑与调试JavaScript
3
第一个JavaScript示例
讲师:贾如春 QQ:460669467
CSS基本语法
目录
什么是JavaScript 编辑与调试JavaScript
什么是 JavaScript 第一个 JavaScript示例
2、编辑软件
1 Macromedia Dreamweaver
2 Microsoft FrontPage
3、调试软件
1 Microsoft的Internet Explorer 2 Mozilla的Firefox浏览器
CSS基本语法
目录
CSS的常用技巧 CSS用于网页布局设计 CSS其他设计原则
第一个JavaScript示例
第一个JavaScript示例
2、JavaScript的特点
解释性的 用于客户端的
基于对象的
与Java比较
3、JavaScript与Java比较
JavaScript 在客户端运行时被解释 程序原代码嵌入在HTML文 件中 没有严格的数据类型 由美国Netscape公司的 Brendan Eich发明 只能在浏览器中应用 只作用于HTML的对象元素 Java 由编写者编译后变成机器码, 运行在服务器端或客户端 由Java开发的Applets与HTML无关 具有严格的数据类型 由美国Sun Microsystems公司的 James Gosling发明 可以作为独立的应用程序 可以作用于HTML元素外的对象, 如多媒体
1. JavaScript的发展历史 2. JavaScript的特点 3. JavaScript与Java比较 4. JavaScript的作用
js通过json文件链接获取json的方法

一、介绍JS和JSON的基本概念1.1 JavaScript简介JavaScript是一种轻量级的编程语言,通常用于在网页上实现动态效果和交互功能。
它可以与HTML和CSS结合使用,为网页增加一些动态的交互性,是web前端开发中不可或缺的一部分。
1.2 JSON简介JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集。
它是一种文本格式,易于阅读和编写,并且易于机器解析和生成。
二、使用JavaScript从JSON文件获取数据的方法2.1 创建XMLHttpRequest对象在JavaScript中,要从JSON文件中获取数据,首先需要创建一个XMLHttpRequest对象。
这个对象用于向服务器发起HTTP请求,并接收服务器返回的数据。
2.2 打开和发送请求通过XMLHttpRequest对象的open()方法和send()方法,可以向服务器发送GET或POST请求,并接收服务器返回的数据。
在发送请求时,需要指定JSON文件的URL。
2.3 处理服务器响应一旦服务器返回了数据,XMLHttpRequest对象就会触发onreadystatechange事件。
在onreadystatechange事件的回调函数中,可以通过XMLHttpRequest对象的responseText属性获取服务器返回的JSON数据。
2.4 解析JSON数据一旦获取了JSON数据,就需要将其解析成JavaScript对象,以便在页面上进行进一步操作。
可以使用JSON.parse()方法将JSON数据转换为JavaScript对象。
这样就可以通过JavaScript来访问和操作JSON数据了。
三、使用Fetch API获取JSON数据3.1 Fetch API简介Fetch API是一种现代的网络请求方法,它提供了一种更简洁、更灵活的方式来发起网络请求并处理服务器响应。
JavaScript _W3C
JavaScript 基础JavaScript 简介 Previous Page Next Page 在数百万张页面中,JavaScript 被用来改进设计、验证表单、检测浏览器、创建 cookies,等等等等。
JavaScript 是因特网上最流行的脚本语言,并且可在所有主要的浏览器中运行,比方说 Internet Explorer、 Mozilla、Firefox、Netscape、和 Opera。
你应该具备的基础知识:在继续学习前,你应该对以下知识有基本的了解: HTML XHTML如果你希望首先学习这些内容,请在 首页 访问相关教程。
什么是 JavaScript? JavaScript 被设计用来向 HTML 页面添加交互行为。
JavaScript 是一种脚本语言(脚本语言是一种轻量级的编程语言)。
JavaScript 由数行可执行计算机代码组成。
JavaScript 通常被直接嵌入 HTML 页面。
JavaScript 是一种解释性语言(就是说,代码执行不进行预编译)。
所有的人无需购买许可证均可使用 JavaScript。
Java 和 JavaScript 是相同的吗?不同! 在概念和设计方面,Java 和 JavaScript 是两种完全不同的语言。
Java(由太阳微系统公司开发)很强大,同时也是更复杂的编程语言,就像同级别的 C 和 C++。
JavaScript 能做什么?JavaScript 为 HTML 设计师提供了一种编程工具 HTML 创作者往往都不是程序员,但是 JavaScript 却是一种只拥有极其简单的语法的脚本 语言!几乎每个人都有能力将短小的代码片断放入他们的 HTML 页面当中。
JavaScript 可以将动态的文本放入 HTML 页面 类似于这样的一段 JavaScript 声明可以将一段可变的文本放入 HTML 页面: document.write("<h1>" + name + "</h1>") JavaScript 可以对事件作出响应 可以将 JavaScript 设置为当某事件发生时才会被执行, 例如页面载入完成或者当用户点击某 个 HTML 元素时。
js {¥}用法
js {¥}用法摘要:1.JavaScript 简介2.什么是JS 代码片段3.JS {¥} 语法的作用4.JS {¥} 的使用场景5.JS {¥} 语法与普通JavaScript 代码的差异6.如何编写JS {¥} 代码7.JS {¥} 代码的优化与调试8.JS {¥} 在实际项目中的应用正文:JavaScript(简称JS)是一种广泛应用于网页开发的编程语言,它能够为网页带来丰富的交互效果。
随着前端技术的不断发展,JS 代码越来越复杂,为了提高代码的可读性和可维护性,JS {¥} 语法应运而生。
JS {¥} 是一种代码片段的语法糖,可以将一段普通的JavaScript 代码封装成一个独立的代码块。
通过使用JS {¥} 语法,我们可以轻松地实现代码的模块化,从而提高代码质量。
JS {¥} 语法的作用主要体现在以下几点:- 提高代码可读性:通过将代码划分为独立的模块,可以使代码结构更加清晰,便于阅读和理解。
- 提高代码可维护性:模块化后的代码更加容易维护和修改,降低了出错概率。
- 有利于代码复用:将具有相同功能的代码封装成模块,可以方便地在其他地方进行复用。
JS {¥} 语法适用于以下场景:- 页面加载时需要执行的初始化操作。
- 某个功能模块的封装,如表单验证、分页加载等。
- 需要多次使用的公共函数库。
JS {¥} 语法与普通JavaScript 代码的差异主要表现在以下几点:- JS {¥} 代码块使用大括号包裹,而普通JS 代码不需要。
- JS {¥} 代码块可以包含多条语句,而普通JS 代码每条语句都需要以分号结尾。
- JS {¥} 代码块中的变量声明会被提升至全局作用域,而普通JS 代码不会。
编写JS {¥} 代码时,需要注意以下几点:- 保持代码简洁明了,遵循单一职责原则,每个模块只解决一个问题。
- 使用恰当的模块名称,便于他人理解模块功能。
- 避免在JS {¥} 代码块中使用全局变量,以减少代码之间的耦合。
JavaScript技术手册
JavaScript技术手册JavaScript是一种高级的、解释型的编程语言,主要用于为网页添加交互和动态特效。
它与HTML和CSS并列作为前端开发的三大基础技术之一。
本篇技术手册将从基础知识到高级应用,系统地介绍JavaScript的各个方面。
一、JavaScript的基础知识1. JavaScript简介JavaScript的发展历史、应用领域和特点。
2. 开发环境准备JavaScript开发所需的工具和环境配置。
3. JavaScript语法JavaScript的变量、基本数据类型、流程控制语句、函数等基本语法规则。
二、DOM操作与事件处理1. DOM简介Document Object Model(文档对象模型)的基本概念和作用。
2. DOM元素选择与操作使用JavaScript选择和操作HTML元素的方法和技巧。
3. 事件处理绑定、监听和处理用户的交互事件,实现动态响应的效果。
三、JavaScript的函数与面向对象编程1. JavaScript函数函数的定义、调用、参数传递和返回值等相关知识。
2. JavaScript对象对象的创建、属性和方法操作以及原型链等内容。
3. 面向对象编程使用JavaScript实现面向对象编程的方法和技巧。
四、数据存储与异步编程1. 数据存储使用JavaScript操作本地存储、Cookie和Web Storage等机制。
2. 异步编程JavaScript中的异步操作、回调函数和Promise等概念和用法。
五、Ajax与前后端交互1. Ajax简介Asynchronous JavaScript and XML(异步JavaScript和XML)的基本概念和原理。
2. 使用XMLHttpRequest对象进行数据交互通过JavaScript发起HTTP请求并处理服务器的响应结果。
3. 使用Fetch API进行数据交互使用新的Fetch API简化Ajax请求的编写和处理。
JavaScript简介
JavaScript简介⼀、简介Javascript,⼀种⾼级编程语⾔,通过解释执⾏,是⼀门动态类型,⾯向对象(基于原型)的直译语⾔。
它已经由欧洲电脑制造商协会通过ECMAscript实现语⾔的标准化。
它被世界上的绝⼤多数⽹站所使⽤,也被世界主流浏览器(Chrome、IE、FireFox等)⽀持。
JavaScript是⼀门基于原型、函数先⾏的语⾔,是⼀门多范式的语⾔,它⽀持⾯向对象编程,命令式以及函数式编程。
它提供语法来操控⽂本、数组、⽇期以及正则表达式等,不⽀持I/O,⽐如⽹络、存储和图形等,但这些都可以由它的宿主环境提供⽀持。
JavaScript虽与Java有很多相似性,但这两门编程语⾔从设计之初就有很⼤的不同,JavaScript的语⾔设计主要受到了Self(⼀种基于原型的编程语⾔)和Scheme(⼀门函数式编程语⾔)的影响。
在语法结构上它⼜与C语⾔有很多相似(例如if条件语句、while循环、switch语句、do-while循环等)。
⼆、组成部分⼀个完整的 JavaScript 实现是由以下 3 个不同部分组成的:核⼼(ECMAscript)、⽂档对象模型(Document Object Model,简称DOM)、浏览器对象模型(Browser Object Model,简称BOM)。
三、相关概念JavaScript程序是由若⼲语句组成的,语句是编写程序的指令。
JavaScript提供了完整的基本编程语句,它们是:赋值语句、switch选择语句、while循环语句、for循环语句、for each循环语句、do...while循环语句、break循环中⽌语句、continue循环中断语句、with语句、try…catch语句、if语句(if..else,if…else if…)。
四、基本特点Javascript就是适应动态⽹页制作的需要⽽诞⽣的⼀种新的编程语⾔,如今越来越⼴泛地使⽤于Internet⽹页制作上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
悟透JavaScript编程世界里只存在两种基本元素,一个是数据,一个是代码。
编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。
数据天生就是文静的,总想保持自己固有的本色;而代码却天生活泼,总想改变这个世界。
你看,数据代码间的关系与物质能量间的关系有着惊人的相似。
数据也是有惯性的,如果没有代码来施加外力,她总保持自己原来的状态。
而代码就象能量,他存在的唯一目的,就是要努力改变数据原来的状态。
在代码改变数据的同时,也会因为数据的抗拒而反过来影响或改变代码原有的趋势。
甚至在某些情况下,数据可以转变为代码,而代码却又有可能被转变为数据,或许还存在一个类似E=MC2形式的数码转换方程呢。
然而,就是在数据和代码间这种即矛盾又统一的运转中,总能体现出计算机世界的规律,这些规律正是我们编写的程序逻辑。
不过,由于不同程序员有着不同的世界观,这些数据和代码看起来也就不尽相同。
于是,不同世界观的程序员们运用各自的方法论,推动着编程世界的进化和发展。
众所周知,当今最流行的编程思想莫过于面向对象编程的思想。
为什么面向对象的思想能迅速风靡编程世界呢?因为面向对象的思想首次把数据和代码结合成统一体,并以一个简单的对象概念呈现给编程者。
这一下子就将原来那些杂乱的算法与子程序,以及纠缠不清的复杂数据结构,划分成清晰而有序的对象结构,从而理清了数据与代码在我们心中那团乱麻般的结。
我们又可以有一个更清晰的思维,在另一个思想高度上去探索更加浩瀚的编程世界了。
在五祖弘忍讲授完《对象真经》之后的一天,他对众弟子们说:“经已讲完,想必尔等应该有所感悟,请各自写个偈子来看”。
大弟子神秀是被大家公认为悟性最高的师兄,他的偈子写道:“身是对象树,心如类般明。
朝朝勤拂拭,莫让惹尘埃!”。
此偈一出,立即引起师兄弟们的轰动,大家都说写得太好了。
只有火头僧慧能看后,轻轻地叹了口气,又随手在墙上写道:“对象本无根,类型亦无形。
本来无一物,何处惹尘埃?”。
然后摇了摇头,扬长而去。
大家看了慧能的偈子都说:“写的什么乱七八糟的啊,看不懂”。
师父弘忍看了神秀的诗偈也点头称赞,再看慧能的诗偈之后默然摇头。
就在当天夜里,弘忍却悄悄把慧能叫到自己的禅房,将珍藏多年的软件真经传授于他,然后让他趁着月色连夜逃走...后来,慧能果然不负师父厚望,在南方开创了禅宗另一个广阔的天空。
而慧能当年带走的软件真经中就有一本是《JavaScript真经》!回归简单要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原。
前面说过,编程世界只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系。
JavaScript就是把数据和代码都简化到最原始的程度。
JavaScript中的数据很简洁的。
简单数据只有undefined,null, boolean,number和string这五种,而复杂数据只有一种,即object。
这就好比中国古典的朴素唯物思想,把世界最基本的元素归为金木水火土,其他复杂的物质都是由这五种基本元素组成。
JavaScript中的代码只体现为一种形式,就是function。
注意:以上单词都是小写的,不要和Number,String,Object, Function等JavaScript内置函数混淆了。
要知道,JavaScript语言是区分大小写的呀!任何一个JavaScript的标识、常量、变量和参数都只是unfined, null,bool,number,string,object和function类型中的一种,也就typeof返回值表明的类型。
除此之外没有其他类型了。
先说说简单数据类型吧。
undefined:代表一切未知的事物,啥都没有,无法想象,代码也就更无法去处理了。
注意:typeof(undefined)返回也是undefined。
可以将undefined赋值给任何变量或属性,但并不意味了清除了该变量,反而会因此多了一个属性。
null:有那么一个概念,但没有东西。
无中似有,有中还无。
虽难以想象,但已经可以用代码来处理了。
注意:typeof(null)返回object,但null并非object,具有null 值的变量也并非object。
boolean:是就是,非就非,没有疑义。
对就对,错就错,绝对明确。
既能被代码处理,也可以控制代码的流程。
number:线性的事物,大小和次序分明,多而不乱。
便于代码进行批量处理,也控制代码的迭代和循环等。
注意:typeof(NaN)和typeof(Infinity)都返回number。
NaN参与任何数值计算的结构都是NaN,而且NaN!=NaN。
Infinity/Infinity=NaN。
string:面向人类的理性事物,而不是机器信号。
人机信息沟通,代码据此理解人的意图等等,都靠它了。
简单类型都不是对象,JavaScript没有将对象化的能力赋予这些简单类型。
直接被赋予简单类型常量值的标识符、变量和参数都不是一个对象。
所谓“对象化”,就是可以将数据和代码组织成复杂结构的能力。
JavaScript中只有object类型和function类型提供了对象化的能力。
没有类object就是对象的类型。
在JavaScript中不管多么复杂的数据和代码,都可以组织成object形式的对象。
但JavaScript却没有“类”的概念!对于许多面向对象的程序员来说,这恐怕是JavaScript中最难以理解的地方。
是啊,几乎任何讲面向对象的书中,第一个要讲的就是“类”的概念,这可是面向对象的支柱。
这突然没有了“类”,我们就象一下子没了精神支柱,感到六神无主。
看来,要放下对象和类,达到“对象本无根,类型亦无形”的境界确实是件不容易的事情啊。
这样,我们先来看一段JavaScript程序:var life={};for(life.age=1;life.age<=3;life.age++){switch(life.age){case1:life.body="卵细胞";life.say=function(){alert(this.age+this.body)};break;case2:life.tail="尾巴";life.gill="腮";life.body="蝌蚪";life.say=function(){alert(this.age+this.body+"-"+this.tail+","+this. gill)};break;case3:delete life.tail;delete life.gill;life.legs="四条腿";life.lung="肺";life.body="青蛙";life.say=function(){alert(this.age+this.body+"-"+this.legs+","+this. lung)};break;};life.say();};这段JavaScript程序一开始产生了一个生命对象life,life诞生时正是由于放下了“类”这个概念,JavaScript的对象才有了其他编程语言所没有的活力。
如果,此时你的内心深处开始有所感悟,那么你已经逐渐开始理解JavaScript的禅机了。
函数的魔力接下来,我们再讨论一下JavaScript函数的魔力吧。
JavaScript的代码就只有function一种形式,function就是函数的类型。
也许其他编程语言还有procedure或method等代码概念,但在JavaScript里只有function一种形式。
当我们写下一个函数的时候,只不过是建立了一个function类型的实体而已。
请看下面的程序:function myfunc(){alert("hello");};alert(typeof(myfunc));这个代码运行之后可以看到typeof(myfunc)返回的是function。
以上的函数写法我们称之为“定义式”的,如果我们将其改写成下面的“变量式”的,就更容易理解了:var myfunc=function(){alert("hello");};alert(typeof(myfunc));这里明确定义了一个变量myfunc,它的初始值被赋予了一个function的实体。
因此,typeof(myfunc)返回的也是function。
其实,这两种函数的写法是等价的,除了一点细微差别,其内部实现完全相同。
也就是说,我们写的这些JavaScript函数只是一个命了名的变量而已,其变量类型即为function,变量的值就是我们编写的函数代码体。
聪明的你或许立即会进一步的追问:既然函数只是变量,那么变量就可以被随意赋值并用到任意地方啰?我们来看看下面的代码:var myfunc=function(){alert("hello");};myfunc();//第一次调用myfunc,输出hellomyfunc=function(){alert("yeah");};myfunc();//第二次调用myfunc,将输出yeah这个程序运行的结果告诉我们:答案是肯定的!在第一次调用函数之后,函数变量又被赋予了新的函数代码体,使得第二次调用该函数时,出现了不同的输出。
好了,我们又来把上面的代码改成第一种定义式的函数形式:function myfunc(){alert("hello");};myfunc();//这里调用myfunc,输出yeah而不是hellofunction myfunc(){alert("yeah");};myfunc();//这里调用myfunc,当然输出yeah按理说,两个签名完全相同的函数,在其他编程语言中应该是非法的。
但在JavaScript中,这没错。
不过,程序运行之后却发现一个奇怪的现象:两次调用都只是最后那个函数里输出的值!显然第一个函数没有起到任何作用。
这又是为什么呢?原来,JavaScript执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。
而且,在同一段程序的分析执行中,定义式的函数语句会被提取出来优先执行。
函数定义执行完之后,才会按顺序执行其他语句代码。
也就是说,在第一次调用myfunc之前,第一个函数语句定义的代码逻辑,已被第二个函数定义语句覆盖了。
所以,两次都调用都是执行最后一个函数逻辑了。