PHP8 —— New String Helpers

新增了三个字符串函数,str_starts_with, str_ends_with, str_contains, PHP 的函数这么方便,很难想象竟然一直没有这几个。 str_starts_with 判断字符串是否以另一个字符串开头,在PHP7以及之前 $id = 'inv_abcdefgh'; $result = strpos($id, 'inv_') === 0; var_dump($result); // true PHP8 中可以直接这么写 $result = str_starts_with($id, 'inv_'); str_ends_with 判断字符串是否以另外一个字符串结尾,在 PHP7 及之前,比较麻烦,通常是这么写 $id = 'abcd_inv'; $result = strpos(strrev($id), strrev('_inv')) === 0; 或者 $result = substr($id, -1 * strlen('_inv')) === '_inv'; 或者上正则吧 $result = preg_match('/_inv$/', $id) === 1; 看起来都是比较麻烦的。PHP8 里面可以简化成下面这样了 $id = 'abcd_inv'; $result = str_ends_with($id, '_ind'); str_contains 字符串包含,PHP8 之前一般就是 strpos 来实现了 $url = 'https://example?for=bar'; $result = strpos($url, '?') !== FALSE; PHP8 就直接一点 $result = str_contains($url, '?');

JavaScript 数据类型

类型

JavaScript 语言的每个值都属于一种数据类型。JavaScript 语言规定了7中类型:
  • Undefined
  • Null
  • Boolean
  • String
  • Number
  • Symbol (ES6开始加入)
  • Object

Undefined, Null

Undefined 表示未定义,有一个值 undefined。任何变量在赋值是 Undefined 类型,值为 undefined。一般我们可以用全局变量 undefined 表示这个值,或者 void 运算符将任意表达式变成 undefined。undefined 是一个变量而非关键字,为了避免被无意中篡改,建议使用 void 0 来获取 undefined 值。
Null 表示“定义了但为空”,与 Undefined 有一定的表义差别。Null类型只有一个值 null,它是语言关键字,在任何代码中都可以使用 null 来获得 null 值。
实际代码中,不要将变量赋值为 undefined,这样可保证所有值为 undefined 的变量,都是从来未赋值状态。

Boolean

Boolean 类型有两个值,true 和 false,表示真和假,均为语言关键字。

String

String 表示文本数据,最大长度为 253 - 1。 String 的意义并非“字符串”,而是字符串的 UTF-16 编码,字符串的最大长度,受编码长度影响。
JavaScript 字符串是不可变量,构造之后没有任何方法变更内容,具有值类型的特征。
JavaScript 将每个 UTF-16 单元作为一个字符,处理非 BMP(超出 U+000 ~ U+FFF范围)字符是,需要格外小心。

Number

Number 类型有 18437736874454810627(即 264 - 253 +3)个值,基本符合 IEEE 754-2008 规定的双精度浮点数规则,除了一下例外:
  • NaN,占用 9007199254740990,这是原来符合 IEEE 规则的数字
  • Infinity,无穷大
  • -Infinity,负无穷大
JavaScript中,+0 和 -0 在加法中无差别,在除法中有差别。1/+0 、1/-0 分别得到 Infinity 和 -Infinity。
非整数的 Number 不能使用 === 或 == 比较,console.log(0.1 + 0.2 == 0.3) 返回 false, 应该使用 JavaScript 提供的最小精度值进行比较。 console.log(Math.abs(0.1 + 0.2) <= Number.EPSILON) 返回 true

Symbol

ES6 引入的新类型,是一切非字符的对象 key 集合。
Symbol 可以具有字符串类型的描述,但即使描述相同,Symbol 也不相等。
使用全局 Symbol 函数创建:
var mySymbol = Symbol("my symbol");

Object

在 JavaScript 中,对象的定义是“属性的集合”。属性分为数据属性和访问器属性,二者都是 key-value 结构,key 可以是字符串或者 Symbol 类型。
C++、Java 等语言中,每个类都是一个类型。 JavaScript 中的“类”仅仅是运行时对象的一个私有属性,而 JavaScript 中是无法自定义类型的。常见对象类型有:Number、String、Boolean、Symbol。
3 和 new Number(3) 是完全不同的值,前者是 Number 类型,后者是对象类型。

评论

此博客中的热门博文

D3js Data-binding basics

Vue3新特性(1) —— Vite