在 if 测试中 indexOf 有一点不方便。我们不能像这样把它放在 if 中:
let str = "Widget with id";
if (str.indexOf("Widget")) {
alert("We found it"); // 不工作!
}
上述示例中的 alert 不会显示,因为 str.indexOf("Widget") 返回 0(意思是它在起始位置就查找到了匹配项)。是的,但是 if 认为 0 表示 false。
因此我们应该检查 -1,像这样:
let str = "Widget with id";
if (str.indexOf("Widget") != -1) {
alert("We found it"); // 现在工作了!
}
对于 32-bit 整数,~n 等于 -(n+1)。
只有当 n == -1 时,~n 才为零(适用于任何 32-bit 带符号的整数 n)。
| 方法 | 选择方式…… | 负值参数 |
|---|---|---|
slice(start, end) | 从 start 到 end(不含 end) | 允许 |
substring(start, end) | start 与 end 之间(包括 start,但不包括 end) | 负值代表 0 |
substr(start, length) | 从 start 开始获取长为 length 的字符串 | 允许 start 为负数 |
str.codePointAt(pos)
返回在 pos 位置的字符代码 :
// 不同的字母有不同的代码
alert( "z".codePointAt(0) ); // 122
alert( "Z".codePointAt(0) ); // 90
String.fromCodePoint(code)
通过数字 code 创建字符
alert( String.fromCodePoint(90) ); // Z
我们还可以用 \u 后跟十六进制代码,通过这些代码添加 unicode 字符:
// 在十六进制系统中 90 为 5a
alert( '\u005a' ); // Z