美文网首页
JS的总结文档

JS的总结文档

作者: 李先生Mr_Li | 来源:发表于2018-07-27 10:12 被阅读0次

JS

 js是一种基于对象和事件驱动的并具有相对安全性的客户端脚本语言。也是一种广泛用于web客户端开发的脚本语言,常用来给html网页添加动态功能,如响应用户的各种操作。

js的数据类型有:

  基本数据类型:String、boolean、Number、undefined、null        引用数据类型:Object、Array、Date、RegExp、Function

如何判断数组数据类型:

[if !supportLists]1、[endif]通过专有方法判断如:push(),pop();(可自己给变量定义该方法,有时失效)                2、 obj instanceof Array 返回值判断;   

                    3、es5和jquery都有方法Array.isArray()。                4、toString.call(param) 判断;返回格式 [object

Undefined]                5、obj.constructor === Function 返回值判断

js事件流:

“事件冒泡”:事件由最具体的元素接收,然后逐级向上传播;     “事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体元素; 

   “dom事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡;

什么是Ajax和JSON,它们的优缺点:

  Ajax(Asynchronous Javascript And XML/异步的javascript和xml)。

优点: 可以使得页面不重载全部内容的情况下加载局部内容,降低数据传输量。避免用户不断刷新或者跳转页面,提高用户体验。

 缺点: 对搜索引擎不友好。要实现ajax下的前后退功能成本较大。可能造成请求数的增加。跨域问题限制。

JSON:json是一种轻量级的数据交换格式,ECMA(欧洲计算机制造商协会)的一个子集;

 优点:轻量级,占用带宽小、易于人的阅读和编写,便于机器(js)解析,支持复合数据类型(数组,对象,字符串,数字),能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量。

 缺点:相对xml通用性较差,数据可描述性较差;

什么情况会出现undefined:当只声明变量,并未赋值初始化的时候这个变量的值就是undefined例如:console.log(a);var a = 10

null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象。所以typeof返回object

双等号的类型转换:

var undefined;        undefined ==null; // true

1 == true;  // true

2 == true;  // false

0 == false; // true

0 == '';   // true

NaN == NaN; // false

[] == false; // true

[] == ![];  // true

alert(!![])        //true alert(![])       //false

alert([] == 0)        //true

alert(false == 0)        //true

undefined与null但不全等(===)

当为number与string时,会将string转换为number;

number和boolean时,会将boolean转换为number

number或string与Object,会将Object转换成number或string

js中的数据类型转换

函数转换:parseInt()、parseFloat()、toString()

强类型转换:Boolean()、Number()、String()

弱类型转换:“==”、“-”、“+”、if()

dom增删查改:

增:document.createElement(tag);

document.createTextNode();

document.createDocumentFragment();

dom.appendChild(sondom);

dom.insertBefore(newdom,targetdom);

删:document.removeChild();

改:document.replaceChild();

查:getElementById();getElementsByTagName();getElementsByName();

闭包是什么:

闭包(closure)是javascript的一大难点,也是它的特色。很多高级应用都要依靠闭包来实现。

1、变量作用域

要理解闭包,首先要理解javascript的特殊的变量作用域。

变量的作用域无非就两种:全局变量和局部变量。

javascript语言的特别之处就在于:函数内部可以直接读取全局变量,但是在函数外部无法读取函数内部的局部变量。

注意点:在函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明的是一个全局变量!

2、如何从外部读取函数内部的局部变量?

出于种种原因,我们有时候需要获取到函数内部的局部变量。但是,上面已经说过了,正常情况下,这是办不到的!只有通过变通的方法才能实现。

那就是在函数内部,再定义一个函数。

3、闭包的概念

上面代码中的f2函数,就是闭包。

各种专业文献的闭包定义都非常抽象,我的理解是: 闭包就是能够读取其他函数内部变量的函数。

由于在javascript中,只有函数内部的子函数才能读取局部变量,所以说,闭包可以简单理解成“定义在一个函数内部的函数“。

所以,在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

 4、闭包的用途

闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,不会在f1调用后被自动清除。

为什么会这样呢?原因就在于f1是f2的父函数,而f2被赋给了一个全局变量,这导致f2始终在内存中,而f2的存在依赖于f1,因此f1也始终在内存中,不会在调用结束后,被垃圾回收机制(garbage

collection)回收。

这段代码中另一个值得注意的地方,就是"nAdd=function(){n+=1}"这一行,首先在nAdd前面没有使用var关键字,因此nAdd是一个全局变量,而不是局部变量。其次,nAdd的值是一个匿名函数(anonymous function),而这个匿名函数本身也是一个闭包,所以nAdd相当于是一个setter,可以在函数外部对函数内部的局部变量进行操作。

5、使用闭包的注意点

(1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

(2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

相关文章

  • JS的总结文档

    JS js是一种基于对象和事件驱动的并具有相对安全性的客户端脚本语言。也是一种广泛用于web客户端开发的脚本语言,...

  • 随机方块

    html文档 Tools.js文档 box.js文档 main.js文档

  • D3js入门 --- 柱状图的制作

    D3js官网:https://d3js.org/最近在研究D3js,索性总结一些文档出来,来总结一周以来的学习心得...

  • leancloud建站简明教程

    官方文档都有。我总结一下 leancloud官网 注册账号并创建应用。上面也有详细文档 node.js官网 下载4...

  • 文档模式与文档类型

    读到js高程第十一章,对文档模式和文档类型的区别有点疑问,做了一番搜索和书的再阅读,总结了一下。 页面的文档模式决...

  • JS 插件文档库邀你一起协同创作

    项目概览 JS 插件文档库地址:JS 插件文档库 · 语雀 在线演示代码仓库:JS 插件文档库示例代码 · Git...

  • vue.js总结

    今天做了下vue.js的小总结,参考文档:https://cn.vuejs.org/v2/guide/ 详细地址:...

  • 使用思维导图总结Vue.js官方文档(例子优化、难点及易错点注释

    上篇文章 使用思维导图总结Vue.js官方文档(例子优化、难点及易错点注释)【上】 完成了Vue.js官网基础部...

  • 网页地址

    Bootstrap css 文档 矢量图形Paper.js 文档 aper.js is an open sourc...

  • 使用Helm部署Wikijs

    使用 Helm 部署 Wiki.js ?️ 参考文档:Wiki.js 官方文档 - 安装 - Kubernetes...

网友评论

      本文标题:JS的总结文档

      本文链接:https://www.haomeiwen.com/subject/yzjwmftx.html