
JavaScript
文章平均质量分 65
你温柔的背后是心情的曲折
技术达人
展开
-
10个优化代码的CSS和JavaScript工具
检查和测试代码来发现任何潜在错误,从而在放到网站上之前及时消除错误是一个非常重要的过程。代码检查的过程也俗称为是Web设计师和开发者之间的linting。作为一个设计师,如果你想要写出高度优化的代码,那么你一定需要linting工具。有两种类型的代码检查工具。一种是在执行时间检查代码中的错误和bug。另一种是使用静态代码分析技术并在执行前检查码。后者因为可以节省时间和麻烦显然更佳。事实上,linti原创 2016-07-22 22:21:20 · 966 阅读 · 0 评论 -
JavaScript—内存管理
简介EDIT诸如 C 语言这般的低级语言一般都有低级的内存管理接口,比如 malloc() 和 free()。而另外一些高级语言,比如 JavaScript, 其在变量(对象,字符串等等)创建时分配内存,然后在它们不再使用时“自动”释放。后者被称为垃圾回收。“自动”是容易让人混淆,迷惑的,并给 JavaScript(和其他高级语言)开发者一个印象:他们可以不用关心内存管理。然而这是错误原创 2017-03-06 17:07:37 · 327 阅读 · 0 评论 -
JavaScript—箭头函数
箭头函数表达式的语法比函数表达式短,并且不绑定自己的 this,arguments,super或 new.target。此外,箭头函数总是匿名的。这些函数表达式最适合非方法函数,它们不能用作构造函数。语法EDIT基础语法(param1, param2, …, paramN) => { statements }(param1, param2, …, paramN) => exp翻译 2017-03-06 21:58:40 · 415 阅读 · 0 评论 -
JavaScript—深入理解JavaScript 模块模式
基础知识首先我们开始简单概述模型模式。三年前Eric Miraglia(YUI)的博文使模型模式众所周知。如果你已经很熟悉模型模式,可以直接阅读“高级模式”。匿名闭包这是一切成为可能的基础,也是JavaScript最好的特性。我们将简单的创建匿名函数,并立即执行。所有函数内部代码都在闭包(closure)内。它提供了整个应用生命周期的私有和状态。(function ()转载 2017-03-07 07:38:43 · 306 阅读 · 0 评论 -
JavaScript—基于类 vs 基于原型的语言
基于类 vs 基于原型的语言EDIT基于类的面向对象语言,比如 Java 和 C++,是构建在两个不同实体的概念之上的:即类和实例。类(class):定义了所有用于具有某一组特征对象的属性(可以将 Java 中的方法和变量以及 C++ 中的成员都视作属性)。类是抽象的事物,而不是其所描述的全部对象中的任何特定的个体。例如 Employee 类可以用来表示所有雇员的集合。实例(ins原创 2017-03-04 16:35:42 · 1511 阅读 · 0 评论 -
JavaScript—分析JavaScript在Html页面中的加载顺序
js代码执行顺序比较的形象,用户可以直观的感受这种执行顺序。但是,js代码的执行顺序是比较复杂的。有时候我们会把js代码写在html里面,而html文档在浏览器中解析的过程是这样:浏览器按照文档流从上到下逐步解析页面结构和信息。js代码作为嵌入的脚本也算做html文档的组成部分,因此,js代码在装载时的执行顺序也是根据脚本标签<script>的出现来顺序来决定。(下面一个栗子)<!DOCTYPE h原创 2017-01-16 11:58:03 · 739 阅读 · 0 评论 -
JavaScript—Javascript运行机制之执行顺序详解
JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行。如果你不能理解javaScript语言的运行机制,或者简单地说,你不能掌握javascript的执行顺序,那你就犹如伯乐驾驭不了千里马,让千里马脱缰而出,四处乱窜。 那么JavaScript是怎么来进行解析的吗?它的执行顺序又是如何的呢?在了解这些之前原创 2017-01-16 11:16:07 · 627 阅读 · 0 评论 -
JavaScript—40个Web开发者必须收藏的JavaScript实用技巧
40个Web开发者必须收藏的JavaScript实用技巧原创 2016-07-21 23:39:27 · 821 阅读 · 0 评论 -
JavaScript—在循环中创建闭包:一个常见错误
在循环中创建闭包:一个常见错误EDIT在 JavaScript 1.7 引入 let 关键字 之前,闭包的一个常见的问题发生于在循环中创建闭包。参考下面的示例:p id="help">Helpful notes will appear herep>p>E-mail: input type="text" id="email" name="email">p>p>Name: input原创 2017-03-05 10:21:05 · 524 阅读 · 0 评论 -
JavaScript—用闭包模拟私有方法
用闭包模拟私有方法EDIT诸如 Java 在内的一些语言支持将方法声明为私有的,即它们只能被同一个类中的其它方法所调用。对此,JavaScript 并不提供原生的支持,但是可以使用闭包模拟私有方法。私有方法不仅仅有利于限制对代码的访问:还提供了管理全局命名空间的强大能力,避免非核心的方法弄乱了代码的公共接口部分。下面的示例展现了如何使用闭包来定义公共函数,且其可以访问私有函原创 2017-03-04 18:40:05 · 630 阅读 · 0 评论 -
JavaScript—变量提升、函数提升
变量的作用域在所有函数之外声明的变量,叫做全局变量,因为它可被当前文档中的任何其他代码所访问。在函数内部声明的变量,叫做局部变量,因为它只能在该函数内部访问。ECMAScript 6 之前的JavaScript没有 语句块 作用域;相反,语句块中声明的变量将成为语句块所在代码段的局部变量。例如,如下的代码将在控制台输出 5,因为 x 的作用域是声明了 x 的那个函数(或全局范围原创 2017-03-02 09:34:02 · 379 阅读 · 0 评论 -
JavaScript—不同环境下undefined的不同值
用 var 或 let 声明的且未赋初值的变量,值会被设定为 undefined。试图访问一个未声明的变量或者访问一个使用 let 声明的但未初始化的变量会导致一个 ReferenceError 异常被抛出:var a;// a 的值是 undefinedconsole.log("The value of a is " + a); // Uncaught ReferenceEr原创 2017-03-02 09:24:37 · 273 阅读 · 0 评论 -
JavaScript—for...in 语句、for...of 语句
for...in 语句EDIT这个 for...in 语句循环一个指定的变量来循环一个对象所有可枚举的属性。JavaScript 会为每一个不同的属性执行指定的语句。for (variable in object) { statements}例子下面的函数通过它的参数得到一个对象和这个对象的名字。然后循环这个对象的所有属性并且返回一个列出属性名和该属性值的字原创 2017-03-02 22:44:13 · 1847 阅读 · 0 评论 -
JavaScript—使用arguments对象
函数的实际参数会被保存在一个类似数组的arguments对象中。在函数内,你可以按如下方式找出传入的引数:arguments[i]其中i是引数的序数编号,以0开始。所以第一个传来的参数会是arguments[0]。参数的数量由arguments.length表示。使用arguments对象,你可以处理比声明的更多的参数来调用函数。这在你事先不知道会需要将多少参数传递给函数时十分原创 2017-03-03 16:52:50 · 356 阅读 · 0 评论 -
JavaScript—函数参数:默认参数和剩余参数
函数参数(Function parameter)EDIT从ECMAScript 6开始,有两个新的类型的参数:默认参数(default parameters),剩余参数(rest parameters)。默认参数(default parameter)在JavaScript中,函数参数的默认值是undefined。然而,在某些情况下设置不同的默认值是有用的。这时默认参数可以提原创 2017-03-03 17:13:06 · 2964 阅读 · 0 评论 -
JavaScript—一元操作符:delete、typeof、void
一元操作符(Unary operators)一元操作符仅对应一个操作数。deletedelete操作符, 删除一个对象(an object)或一个对象的属性(an object's property)或者一个数组中某一个键值(an element at a specified index in an array)。语法如下:delete objectName;de原创 2017-03-03 17:32:18 · 849 阅读 · 0 评论 -
JavaScript—关系操作符:in、instanceof
关系操作符(Relational operators)关系操作符对操作数进行比较,根据比较结果相等与否,返回相应的布尔值。inin operator, 如果指定的属性(property)在指定的对象(object)中会返回true,语法如下:propNameOrNumber in objectNamepropNameOrNumber在这里可以是一个代表着属性原创 2017-03-03 17:39:56 · 608 阅读 · 0 评论 -
JavaScript—正则表达式中的特殊字符
字符 含义\匹配将依照下列规则:在非特殊字符之前的反斜杠表示下一个字符是特殊的,不能从字面上解释。例如,没有前面'\'的'b'通常匹配小写'b',无论它们出现在哪里。如果加了'\',这个字符变成了一个特殊意义的字符,意思是匹配一个字符边界。反斜杠也可以将其后的特殊字符,转义为字面量。例如,模式 /a*/ 代表会匹配 0 个或者多个 a。相原创 2017-03-03 21:55:33 · 985 阅读 · 0 评论 -
JavaScript—数组推导式(Array comprehensions)
数组推导式(Array comprehensions)EDIT在JavaScript 1.7 被介绍并计划在 ECMAScript 7, array comprehensions 被规范化并提供一个有用的快捷方式,用来实现如何在另一个数组的基础上构造一个新的数组。推导式可以经常被用在那些需要调用 map() 和 filter()函数的地方,或作为一种结合这两种方式。下面的推导式原创 2017-03-04 09:41:52 · 6601 阅读 · 1 评论 -
JavaScript—定义 getters 与 setters
定义 getters 与 setters一个 getter 是一个获取某个特定属性的值的方法。一个 setter 是一个设定某个属性的值的方法。你可以为预定义的或用户定义的对象定义 getter 和 setter 以支持新增的属性。定义 getter 和 setter 的语法采用对象字面量语法。下面例子描述了getters 和 setters 是如何为用户定义的对象 o 工作原创 2017-03-04 14:07:36 · 927 阅读 · 0 评论 -
JavaScript—迭代器和生成器
对集合中的任意项进行处理是很常见的操作。JavaScript 提供了好几种方法来遍历一个集合,从简单的 for 循环至 map()和filter() 。 迭代器和生成器将迭代的概念纳入的javascritp的核心语言中,并提供了一种自定义 for...of 循环体的机制 。迭代器EDIT一个迭代器对象 ,知道如何每次访问集合中的一项, 并记录它的当前在序列中所在的位置。在原创 2017-03-04 17:28:27 · 942 阅读 · 0 评论 -
JavaScript—内存泄露
内存泄露使用闭包的一个坏处是,在 IE 浏览器中它会很容易导致内存泄露。JavaScript 是一种具有垃圾回收机制的语言——对象在被创建的时候分配内存,然后当指向这个对象的引用计数为零时,浏览器会回收内存。宿主环境提供的对象都是按照这种方法被处理的。浏览器主机需要处理大量的对象来描绘一个正在被展现的 HTML 页面——DOM 对象。浏览器负责管理它们的内存分配和回收。IE原创 2017-03-04 17:38:56 · 368 阅读 · 0 评论 -
JavaScript—相等性判断
JavaScript 提供三种不同的比较操作符:严格相等,使用 ===(非严格)相等,使用 ==以及 Object.is (ECMAScript 6 新特性)ES2015标准提供以下四种比较操作符:(非严格)相等 (==)严格相等 (===): 用于Array.prototype.indexOf, Array.prototype.lastIndexOf, 以及 ca原创 2017-03-04 17:52:16 · 657 阅读 · 0 评论 -
JavaScript—闭包的一个小实例
实用的闭包EDIT闭包确实有用吗?让我们看看闭包的实践意义。闭包允许将函数与其所操作的某些数据(环境)关连起来。这显然类似于面向对象编程。在面对象编程中,对象允许我们将某些数据(对象的属性)与一个或者多个方法相关联。因而,一般说来,可以使用只有一个方法的对象的地方,都可以使用闭包。在 Web 中,您可能想这样做的情形非常普遍。大部分我们所写的 Web JavaScript原创 2017-03-04 18:26:49 · 320 阅读 · 0 评论 -
JavaScript—深入理解JS闭包
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。Js代码var n=999;function f1(){ alert(n);}f1原创 2017-03-01 22:15:01 · 215 阅读 · 0 评论