JavaScript
文章平均质量分 89
clvsit
人生不是戏剧,而我亦非主角
展开
-
《编写可维护的JavaScript》读书笔记之自动化-文件和目录结构
文件和目录结构在开始构建你的系统之前首先要确定如何组织你的文件和目录。而文件和目录的结构取决于项目类型。最佳实践抛开项目类型不说,总有一些适合于 JavaScript 文件和目录结构公用的最佳实践。一个文件只包含一个对象概念:特指每个 JavaScript 文件应该只包含一个 JavaScript 对象的代码。优点:代码更易维护。降低了多个开发者同时修改同一文件的风险。...原创 2019-01-04 16:34:45 · 164 阅读 · 0 评论 -
《编写可维护的JavaScript》读书笔记之编程实践-将配置数据从代码中分离
将配置数据从代码中分离出来任何时候修改源代码都会有引入 bug 的风险,且只修改一些数据的值也会带来一些不必要的风险。精心设计的应用应当将关键数据从主要的源码中抽离出来,因为数据是不应当影响指令的正常运行。什么是配置数据配置数据是应用中写死(hardcoded)的值。示例:// 将配置数据埋藏在代码中function validate(value) { if(!va...原创 2019-01-02 10:54:02 · 286 阅读 · 0 评论 -
《编写可维护的JavaScript》读书笔记之编程实践-抛出自定义错误
抛出自定义错误在 JavaScript 中抛出错误是一门艺术。一旦理解如何抛出错误,以及在何时抛出错误,调试代码的时间将大大所缩短,对代码的满意度将急剧提升。错误的本质如果错误没有被抛出或者报告给开发者,调试是非常困难的。如果所有的失败都是悄无声息,首要的问题是那必将消耗你大量的时间才能发现它,更不要说单独隔离并修复它了。所以错误是开发者的朋友,而非敌人。【建议】:在代码的某个特...原创 2019-01-03 10:41:39 · 195 阅读 · 0 评论 -
JavaScript 块作用域
块作用域是一个用来对之前的最小授权原则进行扩展的工具,将代码从在函数中隐藏信息扩展为在块中隐藏信息。【之前的代码】:for(var loop = 0; loop < 10; loop++) { console.log(loop);}【说明】:我们在 for 循环的头部直接定义了变量 loop,通常是因为只想在 for 循环内部的上下文中使用 loop,而忽略了 loo...原创 2019-01-12 20:32:50 · 363 阅读 · 1 评论 -
《编写可维护的JavaScript》读书笔记之编程实践-不是你的对象不要动
不是你的对象不要动JavaScript 独一无二之处在于任何东西都不是神圣不可侵犯的。默认情况下,可以修改任何可以触及的对象。解析器根本不在乎这些对象是开发者定义的还是默认执行环境的一部分——只要是能访问到的对象都可以修改。在一个开发者独自开发的项目中,这不是问题,开发者确切地知道正在修改什么,因为他对所有代码都了如指掌。然而,在一个多人开发的项目中,对象的随意修改就是个大问题了。什么是你...原创 2019-01-03 12:58:20 · 157 阅读 · 0 评论 -
JavaScript 尽量少用全局变量
尽量少用全局变量JavaScript 使用函数管理作用域。变量在函数内声明,只在函数内有效,不能在外部使用。全局变量与之相反,在函数外部声明,在函数内无需声明即可简单地使用。每一个 JavaScript 环境都有全局对象,可以在函数外部使用 this 进行访问。创建的每一个全局变量都为全局对象所有。var name = 'spirit';console.log(this); ...原创 2019-01-07 21:39:31 · 2857 阅读 · 0 评论 -
JavaScript this 解析
关于 thisthis 关键字是 JavaScript 中最复杂的机制之一。它是一个很特别的关键字,被自动定义在所有函数的作用域中。但是即使是非常有经验的 JavaScript 开发者也很难说清它到底指向什么。任何足够先进的技术都和魔法无异。 —— Arthur C.Clarke为什么要用 this【示例】:function identify() { return thi...原创 2019-01-19 16:19:25 · 150 阅读 · 0 评论 -
JavaScript 作用域
作用域是什么参考和摘录自《你不知道的JavaScript(上)》编译原理通常将 JavaScript 归类为“动态”或“解释执行”语言,但事实上它是一门编译语言。但与传统的编译语言不同,它不是提前编译的,编译结果也不能在分布式系统中进行移植。【传统编译语言编译步骤】:分词/词法分析(Tokenizing/Lexing):这个过程会将由字符组成的字符串分解成有意义(对编程语言来说...原创 2019-01-10 09:35:06 · 229 阅读 · 0 评论 -
JavaScript 词法作用域
词法作用域【前提知识】:JavaScript 的作用域【作用域定义】:作用域被定义为一套用来管理引擎如何在当前作用域以及嵌套的子作用域中根据标识符名称进行变量查找的规则。【最重要的特征】:定义过程发生在代码的书写阶段(假设没有使用 eval() 或 with)。作用域共有两种主要的工作模型。词法作用域:最为普遍的,被大多数编程语言所采用。动态作用域:仍有一些编程语言在使用,比如...原创 2019-01-10 09:37:58 · 404 阅读 · 0 评论 -
《编写可维护的JavaScript》读书笔记之编程实践-避免“空比较”
避免“空比较”在 JavaScript 中,我们常会看到这种代码:变量与 null 的比较,用来判断变量是否被赋予一个合理的值。比如:var Controller = { process : function(items) { // 不好的写法 if(items !== null) { items.sort(); ...原创 2019-01-01 21:14:07 · 1284 阅读 · 3 评论 -
《编写可维护的JavaScript》读书笔记之编程实践-事件处理
事件处理在所有 JavaScript 应用中事件处理都是非常重要的。所有的 JavaScript 均通过事件绑定到 UI 上,所以大多数前端工程师需要花费很多时间来编写和修改事件处理程序。由于事件绑定没有受到多大重视,大多数事件处理相关的代码和事件环境(对于开发者来说,每次事件触发时才会可用)紧紧耦合在一起,导致可维护性很糟糕。典型用法【事件对象】:当事件触发时,事件对象(event 对...原创 2019-01-01 21:12:32 · 1188 阅读 · 0 评论 -
《编写可维护的JavaScript》读书笔记之编程实践-避免使用全局变量
避免使用全局变量在浏览器中,window 对象往往重载并等同于全局对象,因此任何在全局作用域中声明的变量和函数都是 window 对象的属性。【示例】:var color = "red";function sayColor() { alert(color);}console.log(window.color); // redconsole.log(typeof win...原创 2019-01-01 21:10:43 · 1408 阅读 · 1 评论 -
《编写可维护的JavaScript》读书笔记之自动化-Ant
Ant开发者通常基于他们所熟悉的工具来选择构建工具。 Ant 最初是为 Java 项目而量身定做的构建工具,但因其简单的 XML 语法和内置的任务,成为 JavaScript 构建工具的一个明智选择。安装运行 Ant 需要 Java 环境,所以请确保你的系统已经安装并配置好 Java。Mac OS X:默认安装了 Ant。Ubuntu:运行 sudo apt-get install...原创 2019-01-04 16:36:35 · 222 阅读 · 0 评论 -
《编写可维护的JavaScript》读书笔记之编程风格-基本的格式化
基本的格式化命名“计算机科学只存在两个难题:缓存失效和命名。”—— Phil Karlton只要是书写代码,都会涉及变量和函数,因此变量和函数命名对于增强代码可读性至关重要。JavaScript 语言的核心 ECMAScript,即是遵照了驼峰式大小写命名法:小写字母开始,后续每个单词首字母都大写。var thisIsMyName;var doSomething;【注意】:驼峰式...原创 2018-12-31 15:05:43 · 196 阅读 · 0 评论 -
JavaScript 变量类型
变量类型JavaScript 中的变量类型分为值类型(又称为简单类型、基本数据类型)以及引用类型。【值类型】:NumberStringUndefinedNullBoolean【引用类型】:ObjectArrayFunction值类型和引用类型的区别存储方式的不同:每声明一个值类型变量,都会在内存中单独分配出一块区域用以保存,变量之间不会相互影响;而引用类型返...原创 2019-01-05 11:38:09 · 3177 阅读 · 0 评论 -
JavaScript 函数
函数函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。背景:特点:第一类对象(first-class object),可以作为带有属性和方法的值以及参数进行传递。提供局部作用域。函数就是对象的表现:函数可以在运行时动态创建,还可以在程序执行过程中创建。<!-- 在该例子中创建了一个即时函数 --><body><button i...原创 2019-01-05 11:43:29 · 150 阅读 · 0 评论 -
《编写可维护的JavaScript》读书笔记之编程风格-注释
注释注释是代码中最常见的组成部分。它们是另一种形式的文档,也是程序员最后才舍得花时间去写的。但是,对于代码的总体可维护性而言,注释是非常重要的一环。适度的添加注释可以解释说明代码的来龙去脉,其他开发者就可以不用从头开始读代码,而是直接去读代码的任意部分。JavaScript 支持两种不同类型的注释:单行注释和多行注释。单行注释两个斜线开始,至行尾结束。// 这是一句单行注释【...原创 2019-01-01 11:12:18 · 237 阅读 · 0 评论 -
《编写可维护的JavaScript》读书笔记之编程风格-语句与表达式
语句与表达式在 JavaScript 中,诸如 if 和 for 之类的语句有两种写法,使用花括号包裹的多行代码或者不使用花括号的单行代码。【示例】:// 不好的写法,尽管这是合法的JavaScript的代码if(condition) doSomething();// 不好的写法,尽管是合法的JavaScript代码if(condition) doSomething();...原创 2019-01-01 11:14:15 · 194 阅读 · 4 评论 -
《编写可维护的JavaScript》读书笔记之编程风格-变量、函数和运算符
变量、函数和运算符变量声明变量声明是通过 var 语句来完成的。JavaScript 中允许多次使用 var 语句,此外 var 语句几乎可以用在 JavaScript 脚本中的任意地方。【注意】:不论 var 语句是否真正会被执行,所有的 var 语句都提前到包含这段逻辑的函数的顶部执行。function doSomething() { var result = 1...原创 2019-01-01 11:15:33 · 175 阅读 · 0 评论 -
JavaScript变量和函数提升
提升变量和函数声明从它们在代码中出现的位置被“移动”到所在作用域的最上方。【原理】:引擎会在解析 JavaScript 代码之前首先对其进行编译。编译阶段中的一部分工作就是找到所有的声明,并用合适的作用域将它们关联起来。【正确的思考思路】:包括变量和函数在内的所有声明都会在任何代码被执行前首先被处理。也就是说,只有声明本身会被提升,而赋值或其他运行逻辑会留在原地。【举例】:例如 var...原创 2019-01-11 09:39:16 · 137 阅读 · 0 评论 -
JavaScript 函数作用域
函数作用域每一个作用域都可以作为容器,其中包含了标识符(变量、函数)的定义。这些作用域互相嵌套并且整齐地排列成蜂窝型(没有交集),排列的结构在写代码时定义。【前提知识】:作用域词法作用域【疑问】:究竟是什么生成了一个作用域?只有函数会生成新的作用域吗?JavaScript 中的其他结构能生成作用域吗?函数中的作用域属于这个函数的全部变量都可以在整个函数的范围内使用及复用(事...原创 2019-01-10 09:41:19 · 654 阅读 · 0 评论