摘要: PHP - 数组排序函数在本章中,我们将一一介绍下列 PHP 数组排序函数:sort() - 对数组进行升序排列rsort() - 对数组进行降序排列asort() - 根据关联数组的值,对数组进行升序排列ksort() - 根据关联数组的键,对数组进行升序排列arsort() - 根据关联数组的值,对数组进行降序排列krsort() - 根据关联数组的键,对数组进行降序排列 阅读全文
posted @ 2018-01-16 17:40 Chen,ChunChang 阅读(211) 评论(0) 推荐(0) 编辑
摘要: PHP Switch 语句 switch (n) { case label1: 如果 n=label1,此处代码将执行; break; case label2: 如果 n=label2,此处代码将执行; break; default: 如果 n 既不等于 label1 也不等于 label2,此处代 阅读全文
posted @ 2018-01-16 17:31 Chen,ChunChang 阅读(274) 评论(0) 推荐(0) 编辑
摘要: strlen() 函数返回字符串的长度(字符数) 代码: <?php echo strlen("Hello world!"); ?> <?php echo strlen("Hello world!"); ?> <?php echo strlen("Hello world!"); ?> <?php e 阅读全文
posted @ 2018-01-16 17:20 Chen,ChunChang 阅读(307) 评论(0) 推荐(0) 编辑
摘要: ES5 => 筛选功能 Array.prototypefilter(): 代码: var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present']; const result = words.filter(w 阅读全文
posted @ 2018-01-16 15:08 Chen,ChunChang 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 参考链接参考链接官方文件ECMAScript® 2015 Language Specification: ECMAScript 2015 规格ECMAScript® 2016 Language Specification: ECMAScript 2016 规格ECMAScript® 2017 Language Specification:ECMAScript 2017 规格(草案)ECMAScri... 阅读全文
posted @ 2018-01-16 14:24 Chen,ChunChang 阅读(220) 评论(0) 推荐(0) 编辑
摘要: ArrayBufferArrayBufferArrayBuffer对象、TypedArray视图和DataView视图是 JavaScript 操作二进制数据的一个接口。这些对象早就存在,属于独立的规格(2011 年 2 月发布),ES6 将它们纳入了 ECMAScript 规格,并且增加了新的方法。它们都是以数组的语法处理二进制数据,所以统称为二进制数组。这个接口的原始设计目的,与 WebGL ... 阅读全文
posted @ 2018-01-16 14:23 Chen,ChunChang 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 读懂规格读懂 ECMAScript 规格概述规格文件是计算机语言的官方标准,详细描述语法规则和实现方法。一般来说,没有必要阅读规格,除非你要写编译器。因为规格写得非常抽象和精炼,又缺乏实例,不容易理解,而且对于解决实际的应用问题,帮助不大。但是,如果你遇到疑难的语法问题,实在找不到答案,这时可以去查看规格文件,了解语言标准是怎么说的。规格是解决问题的“最后一招”。这对 JavaScript 语言很... 阅读全文
posted @ 2018-01-16 14:22 Chen,ChunChang 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 编程风格编程风格本章探讨如何将 ES6 的新语法,运用到编码实践之中,与传统的 JavaScript 语法结合在一起,写出合理的、易于阅读和维护的代码。多家公司和组织已经公开了它们的风格规范,下面的内容主要参考了 Airbnb 公司的 JavaScript 风格规范。块级作用域(1)let 取代 varES6 提出了两个新的声明变量的命令:let和const。其中,let完全可以取代var,因为两... 阅读全文
posted @ 2018-01-16 14:18 Chen,ChunChang 阅读(174) 评论(0) 推荐(0) 编辑
摘要: Module 的加载实现Module 的加载实现上一章介绍了模块的语法,本章介绍如何在浏览器和 Node 之中加载 ES6 模块,以及实际开发中经常遇到的一些问题(比如循环加载)。浏览器加载传统方法HTML 网页中,浏览器通过 上面代码中,由于浏览器脚本的默认语言是 JavaScript,因此type="application/javascript"可以省略。默认情况下,浏览器是同步加载 J... 阅读全文
posted @ 2018-01-16 14:17 Chen,ChunChang 阅读(217) 评论(0) 推荐(0) 编辑
摘要: Module 的语法Module 的语法概述历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的require、Python 的import,甚至就连 CSS 都有@import,但是 JavaScript 任何这方面的支持都没有,这对开发大型的、复杂的项目形成了巨大障碍。在 ES6... 阅读全文
posted @ 2018-01-16 14:16 Chen,ChunChang 阅读(643) 评论(0) 推荐(0) 编辑
摘要: Decorator修饰器类的修饰许多面向对象的语言都有修饰器(Decorator)函数,用来修改类的行为。目前,有一个提案将这项功能,引入了 ECMAScript。@testable class MyTestableClass { // ... } function testable(target) { target.isTestable = true; } MyTestableCla... 阅读全文
posted @ 2018-01-16 14:14 Chen,ChunChang 阅读(247) 评论(0) 推荐(0) 编辑
摘要: Class 的基本语法Class 的基本语法简介JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。function Point(x, y) { this.x = x; this.y = y; } Point.prototype.toString = function () { return '(' + this.x + ', ' + this.y +... 阅读全文
posted @ 2018-01-16 14:13 Chen,ChunChang 阅读(834) 评论(0) 推荐(0) 编辑
摘要: async 函数async 函数含义ES2017 标准引入了 async 函数,使得异步操作变得更加方便。async 函数是什么?一句话,它就是 Generator 函数的语法糖。前文有一个 Generator 函数,依次读取两个文件。const fs = require('fs'); const readFile = function (fileName) { return new Pro... 阅读全文
posted @ 2018-01-16 14:11 Chen,ChunChang 阅读(225) 评论(0) 推荐(0) 编辑
摘要: Generator 函数的异步应用Generator 函数的异步应用异步编程对 JavaScript 语言太重要。Javascript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。本章主要介绍 Generator 函数如何完成异步操作。传统方法ES6 诞生以前,异步编程的方法,大概有下面四种。回调函数事件监听发布/订阅Promise 对象Generator 函数将 Ja... 阅读全文
posted @ 2018-01-16 14:07 Chen,ChunChang 阅读(195) 评论(0) 推荐(0) 编辑
摘要: Generator 函数的语法Generator 函数的语法简介基本概念Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍 Generator 函数的语法和 API,它的异步编程应用请看《Generator 函数的异步应用》一章。Generator 函数有多种理解角度。从语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多... 阅读全文
posted @ 2018-01-16 14:06 Chen,ChunChang 阅读(291) 评论(0) 推荐(0) 编辑
摘要: Iterator 和 for...of 循环Iterator 和 for...of 循环Iterator(遍历器)的概念JavaScript 原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set。这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是Map,Map的成员是对象。这样就需要一种统一的接口机制,来处理... 阅读全文
posted @ 2018-01-16 14:05 Chen,ChunChang 阅读(197) 评论(0) 推荐(0) 编辑
摘要: Promise 对象Promise 对象Promise 的含义Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可... 阅读全文
posted @ 2018-01-16 14:03 Chen,ChunChang 阅读(239) 评论(0) 推荐(0) 编辑
摘要: ProxyProxy概述Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“... 阅读全文
posted @ 2018-01-16 14:02 Chen,ChunChang 阅读(278) 评论(0) 推荐(0) 编辑
摘要: ReflectReflect概述Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect对象的设计目的有这样几个。(1) 将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上。现阶段,某些方法同时在Object和Reflect对象上部署,未来的新方法将只部署在Reflect对象上。也就... 阅读全文
posted @ 2018-01-16 14:02 Chen,ChunChang 阅读(215) 评论(0) 推荐(0) 编辑
摘要: Set 和 Map 数据结构Set 和 Map 数据结构Set基本用法ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (let i of s) { con... 阅读全文
posted @ 2018-01-16 14:01 Chen,ChunChang 阅读(243) 评论(0) 推荐(0) 编辑