-
跨域之JSONP
JSONP是CORS之前使用最广泛的实现跨域请求的方法之一。 JSONP其实很简单,只要明白了JSONP包括服务器端和浏览器端两部分,然后了解服务器端的简单实现,一切豁然开朗。 我们就先从实... -
JavaScript中的「undefined」和「null」的区别
JavaScirpt中的undefined和null都表示没有值的概念。 使用非严格相等符比较它们时结果为true,虽然它们都是各自类型中的唯一值。 1 conosle.log(undefi... -
通过实现递归加深对JavaScript的认识
递归就是一个函数直接或者间接调用自己。可以优雅地解决某些问题,是一项很有用的编程技术。 利用JavaScript的特性要实现递归是很简单的,写这篇博客的主要目的并不是为了说明如何实现递归,而是... -
JavaScript事件
说明:本文只讨论IE8+。 JavaScript主要通过事件和文档进行交互。本文讨论关于事件的一些基本概念,包括事件流、添加和移除事件处理程序、事件对象、事件处理程序中的this和事件代理,不... -
获取元素的位置和尺寸
说明:本文只涉及IE8+和标准模式。 文档被渲染后,文档中的每一个元素都对应一个矩形盒子,都有自己的位置和尺寸。本文讨论如何获取元素的位置和尺寸。 元素的位置包括两个不同坐标体系下的位置:相... -
JavaScript中块级作用域与其他语言的不同
ES6中支持了块级作用域,但是JavaScript中的块级作用域和其他语言的还是有差异的。 与C语言的块级作用域比较 我们先来看一个示例,比较一下C语言和JavaScript中块级作用域的不同... -
JavaScript中的「hoisting」
JavaScript中变量声明存在一个被称为变量声明提升(hoisting)的现象,但是这个说法是不准确的,有误导性的,虽然它很形象地概括了这个现象。 示例 首先以函数声明和变量声明来两个示例... -
JavaScript中如何确定「this」的值
JavaScript中的this指函数上下文(function context),在函数被调用时自动创建,由函数的调用方式决定。也就是说函数的调用方式决定了该函数中this的值,this叫函数调... -
使用「classlist」简洁高效地修改元素的class属性
修改元素的class属性的通用方法是使用元素的className属性或者getAttribute和setAttribute方法,但是使用它们执行稍微复杂一些的操作都会很繁琐,HTML5提供了cl... -
使用「git hooks」设置在代码提交前自动运行任务
对程序进行lint是开发过程中的一项基本操作。本文将以lint任务为例说明在代码提交前自动运行任务,本文也适用于其他任务,比如单元测试。 执行lint任务的时机 说明:此部分为个人观点,如果不...