JavaScript权威指南之学习笔记第六版
JavaScript学习手册(一)
JavaScript学习⼿册(⼀)JavaScript 学习⼿册1. JavaScript 基础⼊门1.1. JavaScript 注释// 单⾏注释/* 多⾏注释 *//*** 更为美观的多⾏注释*/1.2. 字⾯量字⾯量是⼀种直接在程序中使⽤的数据值。
⽐如:121.2"hello world"'Hi'truefalsenull1.3. 标识符和保留字标识符常⽤于在JavaScript代码中命名常量、变量、属性、函数以及类,JavaScript必须以字母、下划线(_)、或美元符号($)开头。
后续字符可以是字母、数字、下划线或美元符号。
例如:imy_variable_name_dump$str1.4. 保留字与其他语⾔⼀样,JavaScript为语⾔⾃⾝使⽤⽽保留了⼀些标识符,这些标识符称为保留字,其不能作为常量、变量、函数或类的名字,但是可以作为对象的属性名。
这些保留字有:as const export get null target voidasync continue extends if of this whileawait debugger false import return throw withbreak default finally in set true yieldcase delete for instanceof static try argumentscatch do from let super typeof evalclass else function new switch var1.5. UnicodeJavaScript程序是使⽤Unicode字符集编写的,因此在字符串和注释中可以使⽤任意Unicode字符。
考虑可移植性,建议使⽤标识符的命名只使⽤ASCII字母和数字。
1.5.1 Unicode 转义序列某些计算机或硬件⽆法全部正确的显⽰Unicode全部字符,因此JavaScript定义了转义序列,从⽽可以仅使⽤ASCII字符来表⽰Unicode字符。
JavaScript_笔记
1.实践,实践还是实践实践出来的东西是,是从自己骨子里生长出来的东西。
学习犹如散种子,在实践中种子才会发芽、生长、成熟和消亡。
没有发芽的种子还会像蒲公英一样,飘呀飘呀随念飘走,学习就成了一种消磨时间和锻炼思维的方式。
1.1.点滴心得1.1.1.js语言的构成结构基础:词法结构,首先是该语言的字符集,UTF-8,随后是其他的词法规则,包括:大小写敏感,对空格、换行和制表符的处理,对分号的定义(即语句结束规则),注释规则,直接量规则(所谓的直接量,即对内存单元中数据进行读取,而不用通过地址二次引用进行读取,和指针相对),标识符,,关键字。
数据类型和值。
【数据结构,相互之间有联系的元素的集合,数据之间的联系,我们称为逻辑结构。
练联系即结构。
数据类型,一个值的集合,和定义在该值集上的一组操作的统称。
抽象数据模型(Abstract Data Type),是指一个数据模型和定义在该模型上的一组操作。
ADT的形式化是三元组,ADT=(D,S,P)其中,D是数据对象,S是D 上关系的集合,P是对D的基本操作集。
】变量(有了类型,自然就有了变量)。
表达式和运算符(有类型,就有了该类型允许的运算,运算用运算符表示,运算符和变量的集合就是表达式)。
表达式是不能执行的,只有语句才能执行,语句是有动态行为的(function语句除外)。
语句包括:表达式语句,复合语句(语句块),var语句,function语句,if语句,循环语句,return语句,throw语句,trycath语句,空语句,标签语句,with语句,break语句,continue语句。
【function语句的作用是定义函数,而不是执行,因此没有动态行为,发生在函数被解析或者被编译时。
函数的定义和函数的运行并不在同一时刻。
】1.1.2.new对象new 为变量操作符分配一块内存,因此对象类型是引用类型,对象的类型是Object。
Object类型允许的操作是获取属性,通过“.”操作符,允许对变量执行操作,执行的具体操作依据变量类型决定。
JavaScript基础入门教程(一)
JavaScript基础⼊门教程(⼀)本系列教程的说明 本教程说⽩了可以说是我⾃⼰学习JavaScript的笔记,主要内容参考⾃《JavaScript权威指南》,部分内容可能来⾃互联⽹,本系列教程假设学者之前学过c或者其它的编程语⾔,所以⼀些基本for、if等语句的⽤法并不讲解。
javascript简介 JavaScript简称js,最初由⽹景(现在的Mozilla)公司创建,由于商标冲突原因,其标准版本命名为ECMAScript,但是⼀般⼈们还是叫JavaScript,只在谈标准的时候说到ECMAScript这个名字。
值得注意的是JavaScript与java没有任何关系,就像雷峰塔(神话中镇压⽩娘⼦的塔)和雷锋。
此外js(JavaScript)和jsp(java servlet pages)也没有关系。
js的⼯作分为两部分,⼀部分属于js语⾔本⾝的特性,⽽另⼀部需要依靠宿主环境(web浏览器)才能完成。
js的词法字符书写 字符集⽅⾯,要求JavaScript的程序必须是⽤Unicode字符集编写的。
代码编写是区分⼤⼩写的,值得注意的是html是不区分⼤⼩写的(xhtml区分),⽽这个问题在css中则稍显复杂,由于要和html结合,所以css只有在选择器选择id和class时区分⼤⼩写,其他情况都不区分⼤⼩写。
Unicode转义序列,由于我们⽣活中经常⽤到ASCII之外的字符,⽐如中⽂字符等,为了避免不必要的⿇烦,JavaScript⽀持采⽤Unicode转义的⽅式来编码字符串。
⽐如在js中 'café' === 'caf\u00e9' 的结果是true。
在标识符定义⽅⾯,js⽀持使⽤下划线、美元符号(在jQuery中常⽤)、字母和数字来书写,并且数字不能开头。
虽然js强⼤到⽀持使⽤⾮英语语⾔来书写标识符,⽐如 var π=3.14 ,但是从移植性考虑,并不推荐。
前端学习总结
前端学习总结基础:1、语义化H5标签1.1、H5引进了一些新的标签,特别注意article、header、footer、aside、nav等,注意HTML的标题结构1.2、理解浏览器解析HTML的过程,理解DOM的树形结构,及相应API1.3、理解HTML标签在各个浏览器上的默认样式(代理样式),理解CSS中的重置样式表的概念1.4、理解Canvas、SVG、video等功能性标签1.5、理解form、iframe标签,理解文件提交过程推荐书籍:1、《HTML5秘籍》2、高健壮性CSS2.1、学习基础知识,包括大部分常用属性、选择器的用法,要对大多数标签有个基础概念在日常使用的基础上,尝试学习浏览器兼容性问题,要知道兼容性的主要问题及解决方法2.2、深入理解盒子模型,区分块级元素、行内元素,有几个比较重要的属性:display、float、position,一定要弄清楚区分盒子、行内盒子的概念另外可以考虑学一些预编译语言:sass、less,都很简单2.3、学习常用框架,可以使用bootstrap构建项目2.4、学习框架的代码组织方式包括:12格栅系统、组件化、组件的风格化等2.5、学习CSS 3的新功能,特别是动画效果、选择器2.6、认真学习一些CSS对象化思想,学习编写简洁性、高复用性、高健壮性的CSS2.7、有空的话,可以看看所谓的扁平化设计,还有简洁性2.8、理解CSSOM、render、reflow、CSS性能、CSS 阻塞概念学习方法:1、多看别人的代码,一些设计的不错的网站就是很好的学习素材,比如拉勾网2、一定要学会使用grunt、gulp压缩CSS3、display + position + float 可以组合出很复杂的效果,多想想盒子模型4、尝试在不用float,且position不为absolute的情况下实现等高、等宽等布局推荐书籍:1、《图灵程序设计丛书:HTML5与CSS3设计模式》2、《Web开发技术丛书:深入理解Bootstrap》3、《高流量网站CSS开发技术》4、《CSS设计彻底研究》这个一定要5、《Web开发技术丛书:深入理解Bootstrap》6、可以找一些专门讲SASS的书,但是我没找到7、《CSS权威指南(第3版)》3、深入学习JS3.1、重新学习JS语法,注意:表达式(特别是函数访问表达式)、语句、类型(包括类型判断)注意,这个时候主要倾向于“原生”JS 哦,不要使用框架3.2、深入理解JS的“一级函数”、对象、类的概念学会使用函数来构造类、闭包,学会用面向对象的方式组织代码3.3、深入理解JS的作用域、作用域链、this对象(在各种调用形式中,this的指向)理解函数的各种调用方法(call、apply、bind等)3.4、理解对象、数组的概念理解对象的“[]”调用,理解对象是一种“特殊数组”理解for语句的用法深入理解JS中原始值、包装对象的概念(重要)3.5、学习一些常用框架的使用方法,包括:JQUERY、underscore、EXTJS,加分点有:backbone、angularjs、ejs、jade通过比较多个框架的使用方法,想清楚“JS语言极其灵活”这一事实总结常见用法,提高学习速度学习模块化开发(使用require.js、sea.js等)3.6、适当看一些著名框架的源码,比如jQuery(不建议看angularjs,太复杂了)重要的是学习框架中代码的组织形式,即设计模式3.7、了解JS解释、运行过程,理解JS的单线程概念深入理解JS事件、异步、阻塞概念3.8、理解浏览器组成部件,理解V8的概念学习V8的解释-运行过程在V8基础上,学会如何提高JS性能学会使用chrome的profile进行内存泄露分析学习方法:1、提高对自己的要求,要有代码洁癖2、适当的时候看看优秀框架的源码,特别是框架的架构模式、设计模式3、多学学设计模式4、学习原生JS、DOM、BOM、Ajax推荐书籍:1、《O'Reilly精品图书系列:?JavaScript 权威指南(?第6版)》必看2、《JavaScript设计模式》3、《WebKit技术内幕》4、《JavaScript框架高级编?程:应用Prototype YUI Ext JS Dojo MooTools》5、《用AngularJS开发下一代Web应用》6、跨终端6.1、理解混合APP的概念6.2、理解网页在各类终端上的表现6.3、理解网页与原生app的区同,重在约束6.4、理解单页网站,特别要规避页面的内存泄露问题6.5、入门nodejs,对其有个基础概念,知道它能做什么,缺点是什么推荐书籍:1、《单页Web应用:JavaScript从前端到后端》2、《Web 2.0界面设计模式》3、《响应式Web设计:HTML5和?CSS3实战》5、工具学会使用grunt进行JS、CSS、HTML 压缩,特别是模块化js开发时候的压缩会用PS进行切图、保存icon入手sublime、webstorm学会使用chrome调试面板,特别是:console、network、profile、element进阶:1、性能1.1、理解资源加载的过程包括:TCP握手连接、HTTP请求报文、HTTP 回复报文1.2、理解资源加载的性能约束,包括:TCP连接限制、TCP慢启动1.3、理解CSS文件、JS文件压缩,理解不同文件放在页面不同位置后对性能的影响1.4、理解CDN加速1.5、学会使用HTTP头控制资源缓存,理解cache-control、expire、max-age、ETag对缓存的影响1.6、深入理解浏览器的render过程推荐书籍:1、《Web性能权威指南》2、雅虎网站页面性能优化的34条黄金守则2、http及TCP协议族2.1、学习http协议,理解http请求-响应模式 2.2、理解http是应用层协议,它是构建在TCP/IP 协议上的2.3、理解http报文(请求-响应报文)2.4、理解http代理、缓存、网关等概念,指定如何控制缓存2.5、理解http协议内容,包括:状态码、http 头、长连接(http1.1)2.6、学习http服务器的工作模型,对静态文件、CGI、DHTML的处理流程有个大致概念推荐书籍:1、《HTTP权威指南》2、《TCP/IP详解》3、《图解TCP/IP(第5版)》3、安全性XSS、SQL注入。
javascript知识点汇总
DAY01:一、基本特点:1、JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。
通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
2、是一种解释性脚本语言(代码不进行预编译)。
3、主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
4、可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
5、跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
6、avascript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。
Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。
而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。
二、日常用途:1、嵌入动态文本于HTML页面。
2、对浏览器事件做出响应。
3、读写HTML元素。
4、在数据被提交到服务器之前验证数据。
5、检测访客的浏览器信息。
6、控制cookies,包括创建和修改等。
7、基于技术进行服务器端编程。
DAY02:javascript的放置和注释1.输出工具();("","")如何在html页面当中进行放置A.<script></script>***************************************javascript可以在html页面当中的任何位置来进行调用,但是他们还是一个整体,是相互联系,相互影响。
***************************************B.可以在超链接或是重定向的位置调用javascript代码格式:"javascript:alert('我是超链接')"重定向格式:action="javascript:alert('我是表单')"3.在事件后面进行调用A.格式:onclick="alert('我是事件')"B.<scriptfor="two"event="onclick">alert("我是DIV2");</script>4.调用外部javascript文件格式:<scriptsrc=""></script>******************************************************************* 在调用页面<script>标签对当中不能有任何代码在js脚本中不能出现<script>标签对但是他们还是一个整体,是相互联系,相互影响。
网页设计与制作教程——Web前端开发(第6版)课件第8章 JavaScript对象模型8.2
习题8
3.使用对象的事件编程实现当用户选择下拉菜单的颜色时,文本框的字体颜色跟随改 变,如图8-19所示。
《网页设计与制作教程-Web前端开发(第6版)》 刘瑞新主编 配套资源
自由思想,独立思考
1. HTML Document对象的集合 HTML Document对象的常用集合见表8-14。
8.2 DOM的对象
8.2 DOM的对象
2. HTML Document对象的属性 HTML Document对象的常用属性,见表8-15。
Байду номын сангаас
8.2 DOM的对象
3. HTML Document对象的方法 HTML Document对象的常用方法见表8-16。
8.2 DOM的对象
8.2.3 Node对象 Node(节点)对象代表文档树中的一个节点,Node对象是整个DOM的核心对象。 1. Node对象的属性 每个节点都有其节点的属性,Node对象的常用属性见表8-10。
8.2 DOM的对象
(1)nodeName nodeName属性含有某个节点的名称,其中: 1)元素节点的nodeName值是标签名称。 2)属性节点的nodeName值是属性名称。 3)文本节点的nodeName值永远是#text。 4)文档节点的nodeName值永远是#document。 (2)nodeValue 对于文本节点,nodeValue属性包含文本内容。对于属性节点,nodeValue属 性包含属性值。对于文档节点和元素节点,nodeValue属性不可用。 (3)nodeType nodeType属性返回节点的类型,其中最重要的节点类型见表8-11。
8.2 DOM的对象
8.2.6 HTML Element对象
充电必备:十本热门技术书籍推荐
充电必备:十本热门技术书籍推荐你是不是经常想提升自己的技术能力?是不是在迷茫和焦虑中苦苦寻找适合自己的学习素材?在这里,我向你推荐十本热门技术书籍,这些书籍将帮助你深入了解各种技术领域,并提升你的实践能力。
无论你是初学者还是高手,这些书籍都能带给你新的启发,让你在技术的世界中茁壮成长。
一起来看看吧!1.《JavaScript权威指南》简介JavaScript是前端开发中最重要的一门语言之一,而《JavaScript权威指南》正是这门语言的权威指南。
这本书详尽地介绍了JavaScript的语法、特性和应用,让你全面掌握这门语言的精髓。
你为什么要读这本书?•如果你是初学者,这本书可以帮助你建立对JavaScript的全面理解,从而快速入门。
•如果你已经有一定的JavaScript基础,这本书可以帮助你深入了解JavaScript的内部机制,并学会高效地运用它。
2.《Python编程快速上手:让繁琐工作自动化》简介Python是目前最受欢迎的编程语言之一,它的简洁和易学性使得它成为许多程序员的首选。
《Python编程快速上手:让繁琐工作自动化》是一本适合初学者的Python入门书籍,它将教你如何使用Python简化繁琐的工作。
你为什么要读这本书?•如果你是编程新手,这本书将帮助你迅速入门Python,并了解如何使用Python解决实际问题。
•如果你已经有一定的编程经验,这本书可以帮助你学会使用Python进行自动化,提高工作效率。
3.《深入理解计算机系统》简介计算机系统是现代科技的核心,而《深入理解计算机系统》是一本经典的计算机教材,通过深入剖析计算机的底层原理,帮助读者全面理解计算机系统的运行机制。
你为什么要读这本书?•如果你对计算机底层原理感兴趣,这本书将帮助你建立起对计算机系统工作原理的深入理解。
•如果你是计算机专业的学生,这本书可以帮助你系统地学习计算机系统的相关知识,提高你的学术水平。
4.《数据结构与算法分析》简介数据结构与算法是计算机科学中最基础和重要的一门课程,而《数据结构与算法分析》是一本经典的数据结构与算法教材,通过清晰的讲解和丰富的示例,帮助读者理解和应用各种数据结构与算法。
JavaScript基础知识点
JavaScript基础知识点1、JavaScript概述1.1、JavaScript是什么?有什么⽤?HTML:就是⽤来写⽹页的。
⼈的⾝体CSS:就是⽤来美化页⾯的。
⼈的⾐服JavaScript:前端⼤脑、灵魂。
⼈的⼤脑、灵魂JavaScript是WEB上最强⼤的脚本语⾔。
脚本语⾔:⽆法独⽴执⾏。
必须嵌⼊到其它语⾔中,结合使⽤。
直接被浏览器解析执⾏。
Java编程语⾔:独⽴写程序、独⽴运⾏。
先编译后执⾏作⽤:控制页⾯特效展⽰。
例如:JS可以对HTML元素进⾏动态控制JS可以对表单项进⾏校验JS可以控制CSS的样式1.2、JavaScript⼊门案例1.3、JavaScript的语⾔特征及编程注意事项特征:JavaScript⽆需编译,直接被浏览器解释并执⾏JavaScript⽆法单独运⾏,必须嵌⼊到HTML代码中运⾏JavaScript的执⾏过程由上到下依次执⾏注意:JavaScript没有访问系统⽂件的权限(安全)由于JavaScript⽆需编译,是由上到下依次解释执⾏,所以在保持可读性的情况下,允许使⽤链式编程JavaScript和java没有任何直接关系1.4、JavaScript的组成JavaScript包括:ECMAScript 、 DOM 、 BOMECMAScript(核⼼):规定了JS的语法和基本对象。
DOM ⽂档对象模型:处理页⾯内容的⽅法标记型⽂档。
HTMLBOM 浏览器对象模型:与浏览器交互的⽅法和接⼝1.4.1、内部脚本在当前页⾯内部写script标签,内部即可书写JavaScript代码格式:<script type="text/javascript"> JavaScript的代码 </script>注:script标签理论上可以书写在HTML⽂件的任意位置1.4.2、外部引⼊在HTML⽂档中,通过<script src="">标签引⼊.js⽂件格式:<script type="text/javascript" src="javascript⽂件路径"></script>⽰例⼀:<script type="text/javascript" src="01demo1.js"></script>注:外部引⽤时script标签内不能有script代码,即使写了也不会执⾏。
《现代JavaScript教程》内容汇总——JavaScript基础知识
《现代JavaScript教程》内容汇总——JavaScript基础知识⼊职以后由于公司技术栈更多的使⽤JS,所以决定给⼀边学习JS⼀边写⼀些⼼得体会。
本⽂只会着重讲⼀些学习过程中发现的JavaScript相⽐于其它语⾔具有的特性或者优点和区别。
现代JavaScript教程的链接是,在学习过程中我也逐渐发现了JS的精妙之处。
只能说⼀门流⾏的语⾔不管先天上带着多少缺陷,带着这些历史包袱前⾏究竟有多费⼒。
都不能掩盖语⾔本⾝演化过程中所创造出的精妙思想。
JavaScript的特点JavaScript最开始是专门为浏览器设计的⼀门语⾔,但是现在也被⽤于很多其他的环境。
譬如Node.jsJavaScript 与 HTML/CSS 完全集成的,是使⽤最⼴泛的浏览器语⾔。
有很多其他的语⾔可以被“编译”成 JavaScript,这些语⾔还提供了更多的功能。
⽐如常⽤的添加了“严格的数据类型”的TypeScript,它被⼴泛应⽤于复杂系统开发"script"标签<script>标签中包裹了 JavaScript 代码,当浏览器遇到<script>标签,代码会⾃动运⾏。
脚本⽂件可以通过src特性(attribute)添加到 HTML ⽂件中,可以提供从⽹站根⽬录开始的绝对路径,当前⽬录的相对路径以及完整的URL地址。
当引⼊模块时,由于模块⽀持特殊的关键字和功能,因此我们必须通过使⽤<script type="module">特性(attribute)来告诉浏览器(只通过HTTP(s)⼯作,在本地⽂件不⾏。
)语句通常情况下换⾏意味着分号,但这不是绝对的,所以不建议省略分号。
"use strict"确保"use strict"位于最顶部,否则严格模式可能⽆法开启。
(包括脚本⽂件或者函数体)⽆法取消严格模式。
JavaScript权威指南之学习笔记(第六版)
JavaScript权威指南之学习笔记(第六版)核心笔记一、说明JS权威指南文字用红色标出;JS高级程序设计用橙色标出;自己加上的文字用粉红色标出;其(一)-(九)为JS权指南,(十)为JS高级程序设计二、记法结构2.1字符集Javascript程序用的是Unicode字符集编码。
2.2大小写敏感Javascript是一种区分大小写的语言,但是注意HTML是不区分大小写的(尽管XH TML区分大小写的)。
也即在HTML中这些标记和属性名可以任意的大小写方式输入,但是在Javascript中它们通常都是小写的。
2.4可选的分号尽管理论上说来JS允许在任意两个标识符之间放置换行符,但是实际上JS会自动插入分号。
例:ReturnTrue;JS会假定你的意图是:Return;True;2.7标识符第一个字母必须是字母、下划线或美元符号($)!三、数据类型和值3.1数字Javascript不区整型值和浮点型数值。
在Javascript中,所有的数字都是由浮点型表示的。
3.1.1,3.1.2整型直接量、八进制和十六进制的直接量十六进制直接量是以”0x”或”0X”开头,而八进制是以数字0开头。
在ECMAScript标准中不支持八进制的直接量,但是Javascript的某些实现是允许八进制格式的整型直接量的。
所以一般最好不要使用以0开头的整型直接量。
3.1.3浮点直接量例如3.14234.342.3424242.32e231.23424E-323.1.6特殊的数值当一个算术运算(如0除0)产生了未定义的结果或错误时,就会返回一个特殊的非数字的值,为NaN。
这个数字值和任何数值都不相等,包括它自己在内,所以需要一个专门的数字来检测IsNaN()来检测这个值。
特殊数值常量NANInfinity 无穷大Number.MAX_VALUENumber.MIN_VALUENumber.NaNNumber.POSITIVE_INFIITYNumber.NEGATIVE_INFITY这是特殊的常量都是在运算时可能产生的,用IsNaN()或isFinite()等函数来检测。
Javascript教程--从入门到精通【完整版】
Javascript教程--从入门到精通【完整版】(作者:未知,来源:互联网整理:Alone)JavaScript教程语言概况Internet时代,造就了我们新的工作和生活方式,其互联性、开放性和共享信息的模式,打破了传统信息传播方式的重重壁垒,为我们带来了新的机遇。
随着计算机和信息时代的到来,人类社会前进的脚步在逐渐加快,每一天都有新的事情发生,每一天都在创造着奇迹。
随着Internet技术的突飞猛进,各行各业都在加入Internet的行业中来。
无论从管理方面,还是从商业角度来看,Internet都可以带来无限生机。
通过Internet,可以实现地区、集体乃至个人的连接,从而达到一种“统一的和谐”。
那么怎样把自己的或公司的信息资源加入到WWW 服务器,是广大用户日益关心的问题。
采用超链技术(超文本和超媒体技术)是实现这个目标最简单的、最快速的手段和途径。
具体实现这种手段的支持环境,那就是HTML超文本标识语言。
通过它们可制作所需的Web网页。
通过超文本(Hyper Text)和超媒体(Hyper Media)技术结合超链接(Hyper link)的链接功能将各种信息组织成网络结构(web),构成网络文档(Document),实现Internet上的“漫游”。
通过HTML符号的描述就可以实现文字、表格、声音、图像、动画等多媒体信息的检索。
然而采用这种超链技术存在有一定的缺陷,那就是它只能提供一种静态的信息资源,缺少动态的客户端与服务器端的交互。
虽然可通过CGI(Common Gateway Interface)通用网关接口实现一定的交互,但由于该方法编程较为复杂,因而在一段时间防碍了Internet技术的发展。
而JavaScript的出现,无凝为Internet网上用户带来了一线生机。
可以这样说,JavaScript的出现是时代的需求,是当今的信息时代造就了JavaScript。
JavaScript的出现,它可以使得信息和用户之间不仅只是一种显示和浏览的关系,而是实现了一种实时的、动态的、可交式的表达能力。
javascript笔记知识点整理图文
一、JavaScript基础1.变量:区分大小写(html不区分大小写)变量和作用域:1)Js在函数内部直接读取全局变量2)在函数外部无法读取函数内部的局部变量3)在函数内部声明变量的时候,要使用var,如果不用,则认为声明的是全局变量2.标识符的命名:第一个字符必须是字母、下划线或$第二个字符及以后:字母、数字、下划线或¥3.保留字(不可以当做标识符):4.声明变量:1)声明变量: var a;2)赋值: a=10;3)声明变量和初始化变量:var a=10;4)声明多个变量: var x,y,z=10;5)不声明变量,直接使用:x=105.数据类型:1)Typeof操作符:用来检测变量的数据类型:a)Undefined:未定义b)Boolean:布尔型c)String:字符串d)Number:数值e)Object:对象/nullf)Function:函数g)例如:Var sun=“太阳”;Alert(typeof sun);2)Undefined类型:定义了一个变量但是没有给这个变量赋值、使用一个为定义的量、或者用了一个不存在的对象的属性的时候,返回undefined3)Null类型:空字符,表示不存在的值a)如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null。
b)养成编码的规范,不要忘记初始化变量。
4)Boolean类型:true/false(小写)a)Var hello=“hello world”;a)alert(typeof hello)ength。
b)Sdc)重载:就是根据参数选择相同函数名而参数不同的函数6.调用函数的三种方式1)直接调用函数2)以call()方法调用函数:需要动态传入一个函数引用(动态的调用函数)函数的引用.call(调用者,参数1,参数2)3)以apply()方法调用函数4)Apply()和call()的区别:Call()调用的时候,必须在括号内详细的列出每个参数Apply()动态调用的时候,可以在括号中用arguments来代表所有参数7.对象的创建1)使用new关键字调用构造器创建对象2)使用object直接创建对象Js的对象都是object类的子类3)使用json创建对象二、语句1.Foreach循环:for(var 变量名 in 数组名){ }2.For循环:for(var 变量名;范围;变量++/--) { }3.If语句4.While语句5.Do while语句6.Switch语句7.Break:跳出整个循环(当前所在的循环)Continue:结束本次循环,进行下一次循环跳出外层循环:设置标签,如图三、DOM(document object model)文档对象模型1.DOM HTML1)改变HTML内容:(id).innerHTML = new html; =新内容或者:2)改变HTML属性(id).attribute = new value; id.属性=新的属性值2.DOM CSS(id).=new style; .属性=新的属性值3.DOM事件1)Onclick事件:在html元素上点击执行function;2)Ondblclick时间:双击触发3)Onload事件/onunload事件共同点:在用户进入或者离开页面的时候被触发;用于处理cookie不同点:onload检测发访问者的浏览器类型和版本,加载网页的正确版本4)Onchange事件:对输入的字段进行验证5)Onmouseover/onmouseout事件:鼠标放在元素上面/移动的时候触发函数类似伪元素选择器:hover,不同在于这个触发函数6)Onmousedown/onmouseup事件:点击按钮的时候触发事件1,松开鼠标后,触发事件2,最后结束的时候,类似事件onclick。
JS语言核心(JavaScript权威指南第六版)(阅读笔记)
JS语言核心(JavaScript权威指南第六版)(阅读笔记)前言:对于程序员,学习是无止境的,知识淘换非常快,能够快速稳固掌握一门新技术,是一个程序员应该具备的素质.这里将分享本人一点点不成熟的心得.了解一门语言,了解它的概念非常重要,但是一些优秀的设计思想需要细心和大量实践才能慢慢参悟,在这之前需要做的是能够运用它来开发,那么了解一些基础特性非常有必要,通常这些特性是需要经验积累,从各种坑中累计出来,但是还有一种看似很笨却很有效的学习方法.那就是将别人的经验记录下来,有事没事都拿出来看看,集合开发中的经验,这会非常有效.调试工具 firebug需要升级的知识点《ECMAScript 6 入门》词法结构•编程语言的词法结构是一套基础性规则,用来描述如何使用这门语言的编写程序。
•字符集:•o JavaScript程序是用Unicode字符集编写的。
Unicode是ASCII和Latin-1的超集,并支持地球上几乎所有在用的语言•区分大小写•空格、换行符和格式控制符•o JavaScript会忽略程序中标识之间的空格•注释•o第一种注释,在行尾“//”之后的文本都会被JavaScript 当作注释忽略掉的o第二种注释,"/"和"/"之间的本文都会被当作注释•o就是程序中直接使用的数据值“12”//数字true//布尔值等等•标识符和保留字•o标识符就是一个名字。
在JS中,标识符用来对变量和函数名进行命名,或用作JS代码中某些循环语句中的跳转位置的标记。
o标识符必须以字母、下划线、美元符开始o保留字就是JS把一些标识符拿出来用作自己的关键字,因此,就不能再程序中把这些关键字用作标识符了•可选的分号•o缺少分隔符,一条语句结束就成了下一条语句的开始o在JS中,如果语句各自独占一行,通常可以省略语句之间的分号(“}”也可以省略),JS会在换行处自动填补分号,但并不是所有换行出都会自动填补,只有在可以解析的情况下才会填补类型、值和变量•在编程语言中,能够表示并操作的值的类型称做数据类型,编程语言最基本的特性就是能够支持多种数据类型。
ecmascript6手册
ecmascript6手册ECMAScript 6(简称ES6)是JavaScript的一种标准,它于2015年发布,为开发者带来了许多强大的新特性和语法糖。
本手册将详细介绍ES6的核心特性,帮助读者更好地理解和应用这些功能。
1. 简介ECMAScript 6是JavaScript语言的下一个主要版本,它为开发者提供了更好的工具和语法,以提高开发效率和代码质量。
ES6是对ES5的改进和扩展,引入了许多新的特性和语法,为现代Web应用的开发提供了更加便利和高效的方案。
2. 块级作用域ES6引入了let和const关键字,用于声明块级作用域的变量。
相比于var关键字,let和const具有更加严格的作用域规则,可以避免变量提升和全局污染的问题。
let用于声明可变的变量,而const用于声明不可变的常量。
3. 箭头函数箭头函数是ES6中的语法糖,可以用更简洁的语法来定义函数。
箭头函数使用箭头符号(=>)来定义函数,它不绑定this关键字,使得函数内部的this始终指向箭头函数定义时的作用域。
4. 模板字符串模板字符串是ES6中新增的字符串语法,可以方便地拼接字符串和插入表达式。
模板字符串使用反引号(`)包裹,其中的表达式可以通过${}的形式嵌入到字符串中,使得代码更加简洁易读。
5. 解构赋值解构赋值是ES6中一种方便的赋值语法,可以从数组或对象中提取值并赋给变量。
解构赋值可以减少代码的冗余度,并且可以一次性地定义多个变量。
6. PromisePromise是一种处理异步操作的机制,可以更好地处理回调地狱的问题。
ES6引入了原生的Promise对象,使得异步操作更加简洁和可读。
7. 类和继承ES6引入了class关键字,使得JavaScript的面向对象编程更加规范和易用。
class可以定义类,通过extends关键字实现继承,使得代码结构更加清晰,并且提供了更多的面向对象的特性。
8. 模块化ES6引入了新的模块化语法,可以更好地组织和管理JavaScript代码。
Javascript笔记资料
Javascript三颗***:重点正课:1. 什么是js2. 如何编写,如何运行,如何调试js程序3. ***变量4. ***数据类型1. 什么是js:前端三大语言:HTML:专门编写网页内容的语言CSS:专门美化网页样式的语言*************************************************交互:输入数据,处理数据,返回结果JavaScript:专门编写网页交互的语言程序:让计算机可以执行任务的指令的序列Netscape:网景客户端脚本语言:LiveScriptSun Java——“write once run anywhere”LiveScript: JavaScript"像极了Java,但比Java简单的多"JavaScript-->ECMA-->ECMAScript:行业标准,规定核心语法!Netscape:遵照标准实现JavaScriptMicrosoft:遵照标准实现JScriptW3C:DOM标准:专门操作网页内容的API标准JavaScript:ECMAScript(核心语法)+DOM(专门操作网页内容)BOM(专门操作浏览器窗口)2004:Mozilla Firefox2. 如何使用:运行方式:2种:1. 使用浏览器自带的js引擎:浏览器中包含两个引擎:内容排版引擎:负责加载HTML内容,渲染css样式js解释器/引擎:负责解释,并执行js程序浏览器控制台:专门调试程序,显示输出结果的浏览器窗口第一行脚本:console.log("Hello World");console指控制台.翻译为"的"log是控制台提供的一个现有功能,用来记录一行话强调:2点:1. js中凡是要输出的正文都要用引号包裹,但单双引号不分2. js区分大小写!js规定小写的名称,就必须小写!document.write("...");//使用网页的写入方法,向网页内容中写入HTML内容window.alert("...");//使用窗口的警告功能,弹出警告框,显示自定义警告内容。
typescript 全面进阶指南掘金小册
《深度· 广度:TypeScript 全面进阶指南掘金小册》1. TypeScript 全面进阶指南TypeScript 是一种由微软开发的开源编程语言,它是 JavaScript 的一个超集,可以在编译时进行类型检查。
TypeScript 可以编译成纯JavaScript,使之可以运行在任何浏览器、操作系统和计算机上。
作为越来越受欢迎的编程语言,深入了解 TypeScript 并掌握其高级特性对于提高编码效率和开发质量非常重要。
2. 从简到繁,由浅入深的探讨在本文中,我们将从简到繁、由浅入深地探讨 TypeScript 的关键特性和高级概念,帮助读者全面深入地理解和应用 TypeScript。
我们将分为不同模块,涵盖类型系统、高级特性、工程实践、性能优化和社区生态等内容,让读者能够系统地学习和应用 TypeScript。
3. TypeScript 的类型系统TypeScript 的类型系统是其最重要的特性之一。
通过类型系统,可以在编码阶段捕捉常见的错误,增强代码的可读性和可维护性。
我们将介绍 TypeScript 的基本类型、联合类型、交叉类型、泛型、装饰器等高级类型系统特性,并结合实际案例进行深入讲解。
4. 高级特性及工程实践在掌握了基本的类型系统之后,我们将深入探讨 TypeScript 的高级特性,如条件类型、映射类型、类型推断、模块化编程等。
我们还将介绍 TypeScript 在实际工程中的应用,包括与 React、Vue、Node.js 等框架和库的集成,以及如何通过 TypeScript 优化工程的质量和性能。
5. 性能优化与社区生态性能优化是每个开发者都关心的话题,我们将介绍 TypeScript 的性能优化技巧,包括编译优化、代码优化、类型优化等。
我们还将共享TypeScript 的社区生态,包括常用的工具、插件、教程和社区资源,帮助读者更好地融入 TypeScript 社区并获取最新的资讯和支持。
es6系列40道基础题
es6系列40道基础题ES6(ECMAScript 6)是JavaScript的一种新的标准,它引入了许多新的语法和功能,使得JavaScript更加强大和灵活。
下面是40道ES6基础题,帮助大家巩固对ES6的理解和应用。
1. 什么是ES6?ES6是JavaScript的一种新的标准,也被称为ECMAScript 2015。
2. ES6中的let和const有什么区别?let声明的变量可以被重新赋值,而const声明的变量是常量,不可被重新赋值。
3. 解释箭头函数的特点。
箭头函数是一种更简洁的函数写法,它没有自己的this,arguments,super或new.target绑定。
箭头函数的this是继承自外部作用域。
4. ES6中的模板字符串是什么?模板字符串是一种更方便的字符串拼接方式,使用反引号(`)包裹字符串,并使用${}来插入变量或表达式。
5. 解释解构赋值的概念。
解构赋值是一种从数组或对象中提取值并赋给变量的方式,可以简化代码。
6. ES6中的展开运算符是什么?展开运算符(...)可以将一个数组或对象展开成多个参数或元素。
7. 解释ES6中的默认参数。
默认参数是在函数定义时为参数提供默认值,如果调用函数时没有传入该参数,则使用默认值。
8. ES6中的类是什么?类是一种用于创建对象的模板,它可以定义属性和方法,并通过new关键字实例化。
9. 解释ES6中的继承。
继承是一种通过扩展已有类创建新类的方式,子类可以继承父类的属性和方法。
10. ES6中的模块化是什么?模块化是一种将代码分割成多个独立文件的方式,每个文件可以导出和导入模块。
11. 解释ES6中的Promise。
Promise是一种处理异步操作的方式,它可以将异步操作封装成一个对象,可以链式调用then和catch方法。
12. ES6中的Generator是什么?Generator是一种特殊的函数,可以暂停和恢复执行,可以用于处理复杂的异步操作。
js6语法
js6语法JS6语法是JavaScript语言的一个版本,它引入了许多新的语法特性和功能,使得JavaScript代码更加简洁、易读和高效。
本文将介绍一些常用的JS6语法,并以此为标题进行详细解析。
一、箭头函数箭头函数是JS6中最常用的语法之一,它可以更简洁地定义函数并且改变函数内部的this指向。
箭头函数的语法如下:```(param1, param2, …, paramN) => { statements }```箭头函数的参数可以是一个或多个,函数体可以是一个或多个语句。
如果函数体只有一条语句,可以省略大括号和return关键字。
二、模板字符串模板字符串是JS6中引入的一种新的字符串表示方法,可以更方便地拼接字符串。
模板字符串使用反引号(`)包裹,并且可以在字符串中插入变量或表达式,示例如下:```let name = '张三';let age = 20;let message = `我的名字是${name},今年${age}岁。
`;```模板字符串中使用${}来插入变量或表达式,使得字符串拼接更加简洁易读。
三、解构赋值解构赋值是一种将数组或对象的属性赋值给变量的语法,可以快速方便地获取数组或对象的值。
解构赋值的语法如下:```let [a, b, c] = [1, 2, 3];let {name, age} = {name: '张三', age: 20};```通过解构赋值,可以同时定义多个变量并赋值,提高代码的可读性和简洁性。
四、类和对象JS6引入了类和对象的概念,使得面向对象编程更加方便。
类可以通过class关键字定义,对象可以通过new关键字创建。
类和对象的示例代码如下:```class Person {constructor(name, age) { = name;this.age = age;}sayHello() {console.log(`我的名字是${},今年${this.age}岁。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
J a v a S c r i p t权威指南之学习笔记第六版集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]JavaScript权威指南之学习笔记(第六版)核心笔记一、说明JS权威指南文字用红色标出;JS高级程序设计用橙色标出;自己加上的文字用粉红色标出;其(一)-(九)为JS权指南,(十)为JS高级程序设计二、记法结构字符集Javascript程序用的是Unicode字符集编码。
大小写敏感Javascript是一种区分大小写的语言,但是注意HTML是不区分大小写的(尽管XHTML区分大小写的)。
也即在HTML中这些标记和属性名可以任意的大小写方式输入,但是在Javascript中它们通常都是小写的。
可选的分号尽管理论上说来JS允许在任意两个标识符之间放置换行符,但是实际上JS会自动插入分号。
例:ReturnTrue;JS会假定你的意图是:Return;True;标识符第一个字母必须是字母、下划线或美元符号($)!三、数据类型和值数字Javascript不区整型值和浮点型数值。
在Javascript中,所有的数字都是由浮点型表示的。
整型直接量、八进制和十六进制的直接量十六进制直接量是以”0x”或”0X”开头,而八进制是以数字0开头。
在ECMAScript标准中不支持八进制的直接量,但是Javascript的某些实现是允许八进制格式的整型直接量的。
所以一般最好不要使用以0开头的整型直接量。
浮点直接量例如.342424特殊的数值当一个算术运算(如0除0)产生了未定义的结果或错误时,就会返回一个特殊的非数字的值,为NaN。
这个数字值和任何数值都不相等,包括它自己在内,所以需要一个专门的数字来检测IsNaN()来检测这个值。
特殊数值常量NANInfinity 无穷大这是特殊的常量都是在运算时可能产生的,用IsNaN()或isFinite()等函数来检测。
字符串字符串直接量字符串是由单引号或双引号括起来的Unicode字符.在单引号可以含有双引号,双引号可以含有单引号。
字符串直接量中的转义序列\0 \b \t \n \r \v \f \’ \” \\ \uXXXX(四位十六进制的Unicode字符) \xXX由两位十六进制指定的latin-1字符字符串使用可以用(+)来连接字符串。
数字转换为字符串Var number=100;Var s=();还可以指定转换的基数,Var s=(16);还有三个函数可以精确指定转换后的数字格式,toFixed(),toExp onential(),toPrecision();字符串转换为数字当把一个字符串用于数字环境中,它也会自动地转换为一个数字,Var t=”21” * “2”;利用这一优点,只要把一个字符串减去0就可以将其转换为一个数字。
Var t=string_value-0;ParseInt()和ParseFloat(),这两个函数可以从字符串开始处转换和返回任何的数字,忽略或舍去非数字部分。
ParseInt()甚至可以接受另一个参数来指定要解析的数字的基数。
合法的范围在2至36之间。
ParseInt(“012”,2);ParseInt(“0x23”);ParseInt(“ele”);tring对象替代了原始的字符串值。
注意,这个对象中只是瞬时存在的,在用完以后就没有用了,系统会把它丢弃。
Var s=”asdf”;Var len=; 未赋值的变量是虽已经声明了,但是没有给它赋值!作为属性的变量全局对象JS解释器开始运行时,它首先要做的事情之一就是在执行任何JS代码之前,创建一个全局对象,这个对象的属性就是JS程序的全局变量。
当声明一个JS的全局变量或函数时,实际上所做的是定义了那全局对象的一个属性。
或者说用一个同名的属性来存储全局变量和全局函数。
此外,JS解释器还会用预定义的值和函数来初始化全局对象的许多属性,如Infinity,parseInt,Math分别引用了数值infinity,预定义函数ParseInt()和预定义对象Math.在程序的顶层代码(不是函数中的代码)可以用this关键字来引用这个全局对象。
在客户端JS中,Window对象代表浏览器窗口,它是包含在该窗口中的所有JS代码的全局对象,这个全局对象具有自我引用的window属性,它代替了this属性,可以用来引用全局对象。
局部变量: 调用对象内嵌的函数、函数的参数和局部变量是调用对象的属性。
调用对象是在函数运行时创建的!一般用完就释放,除非产生了闭包!深入理解变量作用域在JS的顶层代码中,作用域链只由一个对象构成,那就是全局对象。
所有的变量都是在这一对象中查询的。
如果一个变量存在,那么这个变量的值就是未定义的。
在一个函数(非嵌套)中,作用域链由两个对象构成,第一个函数的调用对象,第二个就是全局对象。
当函数引用一个变量时,首先检查的是调用对象,其次才检查全局对象。
在嵌套函数的作用域链中可以后在三个或更多的对象,查找方式以此类推。
以上所说也就是一个函数在运行的时候的查询变量的情况的流程!这在闭包中也是这样的一个查找过程!五、表达式和运算符算术运算符1.除法运算符在js中,由于所有的数字都是浮点型的,所以除法的结果也是浮点型的(不像C++或C#中的那种除出来是整形!),除数是0的结果为正无穷大或负无穷,而0/0的结果则是NaN.2.模运算符取模操作的运算数通常都是整数,但它也适用于浮点数,如%=;除了加号比较特殊外,其它减、除、模、一元减(-)、一元加(-)、递增运算符(++)、递减运算符(--)都会把非数字变成数字的!相等运算符相等运算符和等同运算符判定==运算符比较的两个值是否相等。
如果两个值具有相同的类型,那么就检测它们的等同性。
如果两个值的类型不同,它们仍然可能相等,用下面的规则和类型转换来检测它们的相等性。
(数字有最高的优先级)1)如果一个值是Null,另一个值是Undefined,则它们相等。
2)如果一个值是字符串,另一个值是数字,那么字符串先转化为数字再进行比较3)如果一个值是布尔值,另一个值为数字或字符串,布尔值和字符串都先转化为数字再进行比较,true为1,false为0.4)如果一个值是对象,别一个是数字或字符串,则对象转换为相应的原始类型的值。
5)其它组合的值不等的。
关系运算符比较运算符(<,>,<=,=>)这些比较运算符的运算数可以是任意类型的。
但是比较运算只能在数字和字符串上执行,所以不是数字或字符串的运算数将被转换为数字或字符串。
1)字符串和数字比较,转换为数字再进行比较。
2)操作数不能转换为数字或字符串时,比较结果为false。
3)若一个操作数为NAN或转换为了NAN,比较结果为false。
运算符In运算符要求左边的运算数是一个字符串,或可以被转换为字符串,右边的运算数是一个对象或数组或函数。
如果该运算符左边的值是其右边对象的一个属性名,它返回true。
例Var point={x:1,y:2};Var has_x_record=”x” in point;逻辑运算符逻辑与运算符(&&)先计算左边表达式的值,如果左边表达式值可以转换为false,那么返回的是左边表达式的值,否则,它将计算右边的表达式的值,并且返回这个表达式的值。
逻辑或运算符(||)原理同逻辑与运算符,先计算左边表达式的值,如果左边表达式的值可以转换为true,则返回这个表达式的值,否则,它将计算右边表达式的值,并且返回该表达式的值。
逻辑非运算符(!)在对操作数取反之前,!运算符先把它的运算数转换为一个布尔类型的值,这意味着,对任何值x应用两次运算符(即!!x)都可以将它转换成一个布尔值。
第一次为了使操作数在布尔环境中取得操作数的相反的布尔值,而第二次就是使取得操作数的正确的布尔值!!其它运算符运算符(与C#的typeof()运算符一样的)它测试一个操作数,返回一个字符串来表式一个操作数的类型。
对数字、字符串或布尔值,返回”number”、”string “、”boolean”,而对数组、对象和Null,它返回的是”object”,而对函数运算数,返回的是”function”,如果运算数是未定义的,它将返回”Undefine d”.运算符它将删除运数所指定的对象的属性、数组元素或变量或函数的属性。
如果删除成功返回true,若不能删除,返回false。
并非所有的属性和变量都是可以删除的,某些内部的核心和客户端属性不能删除,用var语句声明的用户定义变量也不能被删除。
注意,删除属性、变量(数组不一样)不只是把它们的值设置为undefined,当删除它们后,它们全部变成未定义的,也即不存在的,再次尝试读取它们时会出错。
Delete所能影响的只是属性值,并不能影响被这些属性引用的对象,即这些对象只要用其它属性引用就还存在!运算符它可以出现在任何类型操作数之前,它总是舍弃运算数的值,然后返回undefined.这种运算符通常用在客户端的javascript:Url中,在这里可以计算表式的值,但是不会显示出这个值。
<a href=”javascript:void ();”>open a widnow</a>六、语句语句ECMAScript v3标准允许case 语句扣跟随任意的表达式。
例如:Case 60*60:Case ;Case n+1;注意:由于匹配的case表达式是用===等同运算符判定的,而不是用==运算符判定的,所以表达式必须在没有类型转换的情况下进行匹配。
in语句For(variable in object){statement}Variable应该是一个变量名,声明一个变量的var语句,数组的一个元素或者是对象的一个属性。
Object是一个对象名。
在循环体执行之前,对象的一个属性名会被作为字符串赋给变量variable。
在循环体中可以使用这个变量和[]运算符查询该对象属性的值。
注意,for/in循环中的variable可以是任意的表达式,只要它们的值适用于赋值表达式的的左边即可。
JS的数组是一种特殊的对象,因此可以像循环对象属性那样枚举数组下标。
如果for/in循环的主体删除了一个还没有枚举出的属性,那么该属性就不再枚举,如果循环主体定义了新属性,那么循环是否枚举该属性则由JS的实现决定。
For/in循环并不会遍历所有对象的所有可能的属性,那些被标记为只读的、永久的或不可列举的(继承的也不可以),这些属性使用此语句是枚举不出来的,所有用户自定义的属性可以枚举的!语句函数定义可以嵌套在其它函数定义中,但是只能嵌套在那些函数顶层中,也就是说,函数定义不能出现在IF语句,while语句或其它任何语句中。