1.RegExp 构造函数 ES5的缺陷: ES5中构造函数的参数有两种情况: (1)参数是字符串,这时第二个参数表示正则表达式的的修饰符(flag). var reg = new RegExp( "xyz", "i" ); 等价于 var reg = /xyz/i; (2)参数是一个正则表达式,返回一个原有正则表达式的拷贝. var reg = new RegExp( /xyz/i ); 等价于 var reg = /xyz/i; 不允许使用第二个参数指定修饰符,…
1.RegExp 构造函数 在 ES5 中,RegExp构造函数的参数有两种情况. 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag). var regex = new RegExp('xyz', 'i'); // 等价于 var regex = /xyz/i; 第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝. var regex = new RegExp(/xyz/i); // 等价于 var regex = /xyz/i; 但是,ES5 不允…
1.函数参数的默认值 (1)基本用法 ES5 中, 不能直接为函数的参数指定默认值.只能采用变通的方法. function log(x, y) { y = y || 'World'; console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello World (错误) 以上方法虽然可行,但是存在着一定的缺点: 如果参数y 赋了boolea…
1.二进制和八进制数值表示法 二进制前缀:0b(或0B):   八进制前缀:0o(或0O). 注意:ES5的严格模式 和 ES6中不再允许使用 0  表示八进制. 将二进制和八进制数值转换为十进制数值,用Number 方法: Number('0b111'); number('0o10'); 2.Number.isFinite() .Number.isNaN() ES6将全局方法isFinite()  和 isNaN() 移植到Number对象上来检查Infinite 和 NaN 这两个特殊值.…
1.字符串的Unicode 表示法 JavaScript 允许采用 \uxxxx 表示一个字符,其中 xxxx 表示字符的码点. "\u0061" // "a" ES5中的缺陷: 以上表示法只限于 \u0000——\uFFFF 之间的字符.超出这个范围的=字符,必须用两个双字节表示. "\uD842\uDFB7" //"…
  DNS 原理入门 作者: 阮一峰 日期: 2016年6月16日 DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作.我的目标是,读完此文后,你就能完全理解DNS. 一.DNS 是什么? DNS (Domain Name System 的缩写)的作用非常简单,就是根据域名查出IP地址.你可以把它想象成一本巨大的电话本. 举例来说,如果你要访问域名math.stackexchange.com,首先要通过…
来源:https://segmentfault.com/a/1190000005863641 let和const命令 ES6新增let命令,用于声明变量,是块级作用域. let声明的变量不会像var声明的变量发生“变量提升”现象,所以,变量一定要在声明后使用,不然就会报错. 暂时性死区:只要块级作用域内存在let命令,它所声明的变量就会“绑定”在这个区域,不再受外部的影响.即在代码块内,使用let命令声明变量之前,这个变量都是不可用的,这在语法上称为“暂时性死区”. ES6规定暂时性死区和不存在…
首先我们来看一看解构的概念,在ES6标准下,允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称作解构,简而言之粗糙的理解就是变相赋值. 解构赋值的规则是,只要等号右边的值不是对象或者数组,就先将其转为对象. 一.数组的结构赋值 以前为变量赋值只能直接指定.而ES6允许从数组中提取值,按照对应位置对变量赋值,我们先来看下面一段代码 //ES5对变量赋值只能直接指定 var a = 10: var b = 20: var c = 30: //ES6允许写成下面这样 let [a, b,…
正则的扩展 RegExp 构造函数 在 ES5 中,RegExp构造函数的参数有两种情况. 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag). var regex = new RegExp('xyz', 'i'); // 等价于 var regex = /xyz/i; 第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝. var regex = new RegExp(/xyz/i); // 等价于 var regex = /xyz/i; 但是,ES…
1.Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===).它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0.JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等. ES6 提出"Same-value equality"(同值相等)算法,用来解决这个问题.Object.is就是部署这个算法的新方法.它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致…