




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaScript高级(1)一、概述1、JavaScript简介JavaScript被认为是客户端“脚本”,它不常叫“语言”,言外之意是比较简单,但是深入了解之后,你会发现 简单的外表下,蕴藏着丰富的内涵。JavaScript是由Netscape(网景)提出并发展,它起初名为“livescript”,后从营销角度考虑更名为“javascript”,但它和java没有直接关系,顶多是js被期望发展成java那样面向对象的语言(基于对象)。现在JavaScript标准由ECMA(European Computer Manufactures Assiocation)制定和维护,因此也叫“ECMAScript”,它是包含了网景的Javascript和微软的Jscript,最新的js版本是ES6(ECMAScript6.0)。作为客户端脚本的JavaScript常用于网页浏览器的开发,然则它的设计却是一种通用性的脚本语言,可以被嵌入任何应用,例如嵌入falsh脚本化falsh player 嵌入applet脚本化java。JavaScript应该包含:ECMAScript、DOM(document object model)、BOM2、应用场景 数据验证(表单验证) 网页特效(目前大多数的网页特效都是通过JS编写) 编写网页小游戏 服务器端编程,数据交互(Ajax、Node.js)二、工欲善其事,必先利其器检测JavaScript执行结果最好的工具就是浏览器(推荐Google浏览器),火狐等其他浏览器也可以。在Google浏览器中,右键检查或者按快捷键Ctrl+Shift+J,可以打开web控制台,我们可以将要运行的代码粘贴到这里执行,也可以直接在这里输入代码然后按回车执行(Shift+Enter表示换行,直接按Enter表示执行代码)。注意,控制台中如果要输出结果的话,推荐使用console.log();因为console.log()可以一次性输出多个变量,可以输出任何数据类型的变量并且能够看到符合数据类型的内容。当然也可以使用alert();或document.write();直接在这里输入代码也是有提示的,按Tab键表示选取。编写JavaScript代码的工具推荐使用IDE工具进行编写(如phpstrom,NetBeans、visual studio、ZendStudio,也可以用专门编写前端代码的webstrom、HBuilder)三、JavaScript基础加强1、语句和表达式JavaScript程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。语句(statement)是为了完成某种任务而进行的操作,比如下面就是一行赋值语句:var a = 1 + 3;这条语句先用var命令,声明了变量a,然后将1 + 3的运算结果赋值给变量a。1 + 3叫做表达式(expression),指一个为了得到返回值的计算式。语句和表达式的区别在于,前者主要为了进行某种操作,一般情况下不需要返回值;后者则是为了得到返回值,一定会返回一个值。凡是JavaScript语言中预期为值的地方,都可以使用表达式。比如,赋值语句的等号右边,预期是一个值,因此可以放置各种表达式。一条语句可以包含多个表达式。语句以分号结尾,一个分号就表示一个语句结束。多个语句可以写在一行内。var a = 1 + 3 ; var b = abc;分号前面可以没有任何内容,JavaScript引擎将其视为空语句。;上面的代码就表示3个空语句。2、JavaScript变量1、命名规则l 变量必须以字母开头 l 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做) l 变量名称对大小写敏感(y 和 Y 是不同的变量)l 变量不能使用保留字和关键字(尤其不要使用this, name这样的东西)2、一条语句,多个变量3、只声明变量,没有赋初值4、重新声明变量5、变量提升变量提升(hoisting)3、常量常量必须给初始值; 常量不能重新定义;使用const来声明常量。4、运算符1、算数运算符加减乘除取模 累加 累减2、赋值运算符编程中,“=”表示赋值,意思是将等号后面的值赋值给等号前面的变量。注意的是,在if条件判断中和循环中,注意 “=”,“=”和“=”的区别。3、用于字符串的+运算符js中用“+”连接字符串,类似于php中的“点”。如果“+”前后都是数值型,那么“+”表示加法运算。4、比较运算符大于、小于、大于等于. 全等于、不全等= :表示相等判断,只判断值是否想等,不考虑数据类型。比如5 = 5 结果为true= :表示全等判断,即考虑值是否想等,也考虑数据类型是否相同。比如5=5,结果为false。5、三元运算符(三目、条件)-?:判断一个表达式的结果,如果这个结果为true,执行?和:区间的内容,否则执行:后面的内容。语法:var xx = (表示式) ? 代码 : 代码6、逻辑运算符5、流程控制1、分支ifelseifelseswitch2、循环for while dowhile3、跳出(过)循环break跳出循环,终止该循环continue跳过当前这次循环,继续执行下一次循环6、数据类型php数据类型:基本数据类型:字符串,整型,浮点,布尔复合数据类型:数组,对象特殊数据类型:null,资源1、数据类型概述JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值)number、string、bool、null、undefined、object通常,我们将数值、字符串、布尔值称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。而将对象称为合成类型(complex type)的值或引用类型,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。至于undefined和null,一般将它们看成两个特殊值。对象又可以分成三个子类型,即狭义的对象(object)、数组(array)、函数(function),其实,更加广义的讲,原始类型的值(数值、字符串、布尔)也可以看做对象。2、数据类型示例3、判断数据类型JavaScript有三个方法可以确定一个值到底是什么类型typeof运算符,两种用法typeof 123, typeof(123)通过typeof,看到null、数组、对象返回的结果都是object,这个时候就需要用instanceof来判断该值到底是什么数据类型。instanceof运算符,判断一个对象类型的变量的构造器是否是什么,用法:变量 instanceof Object|Array封装一个获取准确的数据类型的函数:function gettype(a) if(typeof a = object) if(a instanceof Array) /说明是数组 return array; else if(a instanceof Object) /说明是对象 return object; else /说明是null return null; return typeof a; 7、函数1、function命令定义function functionName(参数列表)函数体/return2、函数表达式除了用function命令声明函数,还可以采用变量赋值的写法。采用函数表达式声明函数时,function命令后面不带有函数名。如果加上函数名,该函数名只在函数体内部有效,在函数体外部无效。两种方式声明的函数,优先使用哪个?3、函数预加载函数也有和“变量提升”类似的效果,叫做函数预加载,也就是说在实际执行时,函数会预先加载。一个script代码段中,函数可以先调用,后声明(这里的声明指的是传统的声明方式)。4、不能在非函数的代码块中声明函数?由于函数预加载,可能会出现意想不到的结果,常见的是if和try语句中5、函数参数默认值调用函数时,允许省略参数调用;但是JavaScript中函数的参数不能有默认值。ES6中的函数才允许参数有默认值。目前IE11不支持函数参数有默认值,但是火狐、谷歌、UC支持。6、函数参数不固定使用arguments对象可以获取到函数的所有参数。arguments.length表示参数的个数;arguments0表示第一个参数arguments1表示第二个参数.7、参数传值方式函数参数如果是原始类型的值(数值、字符串、布尔值),传递方式是传值传递(passes by value)。这意味着,在函数体内修改参数值,不会影响到函数外部。函数参数是复合类型的值(数组、对象、其他函数),传递方式是传址传递(pass by reference)。也就是说,传入函数的原始值的地址,因此在函数内部修改参数,将会影响到原始值。8、函数自调用(立即调用)第一种方式:第二种:9、递归函数在函数内部调用函数本身的函数就是递归函数。递归层数不要超过200层波非那切数列:1 1 2 3 5 8 13 21传入参数位置,返回该位置的数。8、数组数组(array)是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。任何类型的数据都可以放入数组。声明数组的方式:、var arr = new Array(数组的单元1, 单元2, 单元3.); /一般情况可以使用、var arr = new Array(数字); /这个数字表示数组元素的个数。/非常不推荐、var arr = 数组的单元1, 单元2, 单元3.; / 非常推荐正常情况下,数组的length属性表示数组的长度,即数组元素的个数。9、对象简单的对象声明及调用方式。四、执行流程1、全局环境js在运行时,首先会创建一个全局执行环境,这个全局环境就是定义一个全局对象,页面中所有的内容(不同的script中的内容) 都是这个全局对象的成员,这个全局对象是window。2、执行流程js在执行的时候,会按照script标签来一个一个的执行,也就是先执行第一个script标签中的内容,然后在执行第二个script标签的内容。一个script标签中,首先会先编译代码(检查语法、词法是否错误,没有错误就加载到内容)执行代码(运行或输出结果)。执行完毕,继续按照相同的方式执行下一个script标签的内容。3、错误类型这里所说的错误类型指的是编译错误和执行错误。编译错误特点:执行错误特点:4、错误处理类似于PHP中的异常处理,使用的也是trycatch(e)自然抛出:手动抛出:trycatch(e)后面可以跟一个finally语句,无论前面的trycatch的执行情况是怎样的,finally都会执行。五、作用域(链)1、作用域分类全局作用域:范围是整个运行环境函数作用域:只适用于函数内部,也叫做局部作用域2、作用域及作用域链案例一:函数内部可以使用函数外部的变量案例二:函数内部使用变量的优先级,优先使用函数内部的变量要注意的是,同一个作用域中会发生变量提升。案例三:函数内部没有用var声明的变量也是全局变量,会影响到函数外部的全局变量的值综合案例:用var和不用var声明变量有什么区别?、在函数内部,用var声明的变量是局部变量;没有用var声明的变量是全局变量。、没有用var声明的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 磷酸生产线项目可行性研究报告(范文模板)
- 一场精彩辩论的议论文14篇范文
- 电子商务行业年度增长率统计表
- 可爱的熊猫玩具写物作文(13篇)
- 2025年银行从业资格考试试题及答案资料
- 2025年社交礼仪与职业形象提升能力测试题及答案
- 2025年中国邮政集团有限公司广西壮族自治区分公司校园招聘笔试模拟试题带答案详解
- 2025年中国邮政集团有限公司安徽省分公司校园招聘笔试模拟试题及参考答案详解1套
- 物资采购保密管理制度
- 特定头发护理管理制度
- 2023-2024学年河北省唐山市路南区数学五年级第二学期期末监测试题含解析
- 酒店物品艺术赏析智慧树知到期末考试答案章节答案2024年青岛酒店管理职业技术学院
- (高清版)JTGT 3310-2019 公路工程混凝土结构耐久性设计规范
- 探案识证学诊断 知到智慧树网课答案
- (正式版)JTT 1497-2024 公路桥梁塔柱施工平台及通道安全技术要求
- MOOC 园林植物遗传育种学-北京林业大学 中国大学慕课答案
- 抖音种草方案
- 2022AHA-ACC-HFSA心衰管理指南解读
- 《小石潭记》教学实录及反思特级教师-王君
- 水泥混凝土道路耐久性提升技术
- 公交驾驶员培训课件
评论
0/150
提交评论