我是小又又,住在武汉,做了两年新媒体,准备用 6 个月时间转行前端。
今日学习目标
昨天基于一些页面搜索,学习了《JavaScirpt 高级程序设计》(第三版) 第 3 章节中的 ES 基础概念中基础数据类型,昨天其实有看到 String 有很多方法和属性,所以,今天主要是基于搜索来仔细学习 String 数据类型,又是适合学习的一天,加油,小又又!!!!
今日学习概要
主要是从下面几个方面详细学习 字符串 数据类型
字符串定义 字符串的属性 字符串的柔和方法 字符串的强硬方法 对象通用方法 字符串字面量的原型方法 字符串方法总结
今天,小又又尝试了一个不太同的描述方式,花了很多时间,查了资料,将多个页面进行整理归纳,期望大家能够接受~~~~
这边推荐一个网站,也是今天在 MDN JS Shells 中看到的推荐 jsconsole ~~~~~
同样由于字数问题,今天文章分了三篇上传~~~~
上篇是包括(字符串定义,字符串的属性,字符串的柔和方法部分方法) 中篇是包括(字符串的柔和方法部分方法) 下篇是包括(字符串的柔和方法部分方法,字符串的强硬方法和对象通用方法,字符串字面量的原型方法,字符串方法总结和今日总结)
定义
基本字符串
字符串字面量 (通过单引号或双引号定义) 和 直接调用 String 方法(没有通过 new 生成字符串对象实例)的字符串都是 基本字符串。
基本字符串 是没有相关扩展方法,只有将基本字符串可转化为字符串对象之后才可以使用字符串对象的方法。
当基本字符串需要调用一个字符串对象才有的方法或者查询值的时候,JavaScript 会自动将基本字符串转换为字符串对象,并且调用相应的方法或者执行查询。
字符串对象
一个用于字符串或一个字符序列的构造函数。字符串对于可以保存以文本形式表示的数据非常有用。
一些常用的字符串操作有:查询字符串长度,使用 + 和 += 运算符来构建和连接字符串,使用 indexOf 方法检查某一子字符串在父字符串中的位置,又或是使用 subString 方法提取从父字符串中提取子字符串。
模板字符串
模板字面量/Template literals 是允许嵌入表达式的字符串字面量。
你可以使用多行字符串和字符串插值功能。它们在 ES2015 规范的先前版本中被称为 模板字符串/ template strings。
模板字符串使用反引号 () 来代替普通字符串中的用双引号和单引号。模板字符串可以包含特定语法(${expression})的占位符。
占位符中的表达式和周围的文本会一起传递给一个默认函数,该函数负责将所有的部分连接起来,如果一个模板字符串由表达式开头,则该字符串被称为带标签的模板字符串,该表达式通常是一个函数,它会在模板字符串处理后被调用,在输出最终结果前,你都可以通过该函数来对模板字符串进行操作处理。
在模版字符串内使用反引号(`)时,需要在它前面加转义符(\)。
`\`` === "`"
名词字典
本文中出现变量名词的解释
var a = 4 ;
var b = 8 ;
var strString = "hello little" ;
var oo = new Object ();
var oString = new String ("hello little" );
var oBool = new Boolean (true );
var oNum = new Number (68 );
var oArray = new Array ("demo" ,"little" ,"you" );
var oDate = new Date ();
var oString_1 = 'A \uD87E\uDC04 Z' ;
var tString_1 =`hello Template` ;
var tString_2 =`hello line 1
hello line 2` ;
var tString_3 =`Fifteen is ${a + b} and\nnot ${2 * a + b} .` ;
function tag (strings, ...values ) {
console .log(strings[0 ]);
console .log(strings[1 ]);
console .log(strings[2 ]);
console .log(strings[3 ]);
console .log(values[0 ]);
console .log(values[1 ]);
console .log(values[2 ]);
return "大家好,我是小又又!" ;
}
console .log(strString);
console .log(oString);
console .log(oString_1);
console .log(tString_1);
console .log(tString_2);
console .log(tString_3);
var tString_4 = tag`Hello ${ a + b } little ${ a * b} hahaha ${ a / b}`;
下面主要来说就是,按照个人理解定义的通用变量名词字典~~~
变量名
含义
举例
objectName
相关对象类型名称
就像上面js代码中String
varName
相关对象类型实例化后的变量名
就像上面js代码中strString,oString,tString_1
varName_val
相关对象类型实例化后的实际内容
就像上面js代码中hello little
functionName
函数名称
就像上文的tag
BMP
基本多文种平面(Basic Multilingual Plane),或称第0平面或0号平面(Plane 0),是Unicode中的一个编码区段。编码从U+0000至U+FFFF。现版本为修订10.0.0版,2017年6月20日出版。
无举例
ES5
ECMAScript第五版,发布为ECMAScript 2015,最初发布第一版时间为2009年12月发布,后来在发布时间2015年6月进行了大量修改
无举例
ES6
ECMAScript第六版(发布为ECMAScript 2016),发布时间2016年
无举例
ES7
ECMAScript第七版(发布为ECMAScript 2017),发布时间2017年
无举例
letter
字母
letter(8) 代表八个子母,一个字母长度为一
char
汉字
char(8) 代表八个汉字,一个汉字长度为一
num
数字
num(8) 代表八个数字,一个数字长度为一
sign
符号
sign(8) 代表八个符号,一个符号长度为一
\s
空格符
\s(8) 代表八个空格符,一个空格符长度为一
\t
缩进符
\t(8) 代表八个缩进符,一个缩进符长度为四
\n
换行符
\n(8) 代表八个换行符,一个换行符长度为一
\u
换行符
\u(8) 代表八个非BMP字符,一个非BMP字符长度为二
param1,param2,param3,...,paramN
函数中需要传入第一个到第N个的参数值
就像上面js代码中hello little
柔和方法
不会改变字符串原始值
就是执行某个方法之后,varName原本所包含的内容不会变化
强硬方法
会改变字符串原始值
就是执行某个方法之后,varName原本所包含的内容会变化
父字符串
原始的对象内容
就像上面js代码中strString,oString,tString_1
子字符串
传入需要检索或者替换的参数值
就像上面js代码中hello little
接受负值参
函数接受负值的参数,并且可以正常处理返回对应的值
如果方法的描述中出现这五个字,则代表这个方法接受负值参数,如果没有出现,则代表不接受,请注意
不推荐使用
该特性是非标准的,请尽量不要在生产环境中使用它。
如果下面属性和方法的描述中出现这五个字,意思最好不要使用这个属性或者这个方法。
已废弃
目前现行的几大主流浏览器都不支持了
如果下面属性和方法的描述中出现这三个字,意思你使用了这个一般会报错,或者直接返回undefined。
测试中
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
如果下面属性和方法的描述中出现这三个字,意思你使用了这个不一定被所有浏览器都兼容,最好不要使用这个属性或者这个方法。
字符串的属性
继承对象的属性
属性名
描述
使用方法
constructor
对创建对象的函数的引用(指针)。
varName.constructor
__proto__
对象具有属性__proto__,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型。
varName.__proto__
继承funciton的属性
属性名
描述
使用方法
arguments
不推荐使用,属性代表传入函数的实参,它是一个类数组对象。已经被废弃很多年了,现在推荐的做法是使用函数内部可用的 arguments 对象来访问函数的实参。在函数递归调用的时候(在某一刻同一个函数运行了多次,也就是有多套实参),那么 arguments 属性的值是最近一次该函数调用时传入的实参。如果函数不在执行期间,那么该函数的 arguments 属性的值是 null。
objectName.arguments or functionName.arguments
caller
不推荐使用,如果一个函数functionName是在全局作用域内被调用的,则functionName.caller为null,相反,如果一个函数是在另外一个函数作用域内被调用的,则functionName.caller指向调用它的那个函数,该属性的常用形式arguments.callee.caller替代了被废弃的arguments.caller。
objectName.caller or functionName.caller
displayName
不推荐使用,获取函数的显示名称。
objectName.displayName or functionName.displayName
length
指明函数的形参个数,length 是函数对象的一个属性值,指该函数有多少个必须要传入的参数,即形参的个数。形参的数量不包括剩余参数个数,仅包括第一个具有默认值之前的参数个数。与之对比的是,arguments.length 是函数被调用时实际传参的个数。
objectName.length or functionName.length
name
返回一个函数声明的名称,使用new Function(...)语法创建的函数或只是 Function(...) create Function对象及其名称为anonymous。
objectName.name or functionName.name
prototype
函数对象具有属性__proto__,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型。
objectName.prototype or functionName.prototype
字符串的常用属性值
constructor
变量名
调取方式
属性值
strString
strString.constructor
[Function: String]
oString
oString.constructor
[Function: String]
oString_1
oString_1.constructor
[Function: String]
tString_1
tString_1.constructor
[Function: String]
tString_2
tString_2.constructor
[Function: String]
tString_3
tString_3.constructor
[Function: String]
tString_4
tString_4.constructor
[Function: String]
proto
变量名
调取方式
属性值
strString
strString.__proto__
[String: '']
oString
oString.__proto__
[String: '']
oString_1
oString_1.__proto__
[String: '']
tString_1
tString_1.__proto__
[String: '']
tString_2
tString_2.__proto__
[String: '']
tString_3
tString_3.__proto__
[String: '']
tString_4
tString_4.__proto__
[String: '']
length
变量名
调取方式
属性值
解释
strString
strString.length
12
letter(11)+\s(1)
oString
oString.length
12
letter(11)+\s(1)
oString_1
oString_1.length
6
letter(2)+\s(2)+\u(1)
tString_1
tString_1.length
14
letter(13)+\s(1)
tString_2
tString_2.length
26
letter(18)+num(2)+\s(5)+\n(1)
tString_3
tString_3.length
25
letter(15)+num(4)+\s(4)+sign(1)+\n(1)
tString_4
tString_4.length
10
char(9)+sign(1)
注意事项
特性名称
是否可修改
writable
false
enumerable
false
configurable
false
提示
所有 String 的实例都继承自 String.prototype. 任何String.prototype上的改变都会影响到所有的 String 实例。
但是请注意由于每个varName的构造方法不同,所以在instanceof时候的结果不同,instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。
object instanceof constructor
or object instanceof(constructor )
// @param1 object 要检测的对象.
// @param2 constructor 某个构造函数
//instanceof 运算符用来检测 constructor .prototype 是否存在于参数 object 的原型链上。
变量名
调取方式
属性值
strString
strString instanceof(String)
false
oString
oString instanceof(String)
true
tString_1
tString_1 instanceof(String)
false
tString_2
tString_2 instanceof(String)
false
tString_3
tString_3 instanceof(String)
false
tString_4
tString_4 instanceof(String)
false
字符串对象的柔和方法
HTML相关方法
概述
方法名
描述
参数
big()
不推荐使用,把字符串显示为大号字体,只在页面中才会有大两个字体号效果。
无
small()
不推荐使用, 把字符串显示为小号字体,只在页面中才会有小两个字体号效果。
无
blink()
不推荐使用, 把字符串显示闪动的字符串,目前没有看到有浏览器支持
无
bold()
不推荐使用, 把字符串显示粗体的字符串,只在页面中才会有粗体效果,IE不兼容。
无
italics()
不推荐使用,把字符串显示为斜体,只在页面中才会有效果。
无
strike()
不推荐使用, 把字符串显示为加了删除线的字符串,只在页面中才会有效果。
无
fixed()
不推荐使用, 把字符串显示为打字机文本显示的字符串,只在页面中才会有效果。
无
sub()
不推荐使用,把字符串显示为下标,只在页面中才会有效果。
无
sup()
不推荐使用, 把字符串显示为上标,只在页面中才会有效果。
无
anchor(anchorname)
不推荐使用,创建 HTML 锚。将字符串输出为有唯一标识的纯粹a标签,只在页面中才会有效果。
@param anchorname 必需,为锚定义名称。如果没有传入参数,则会输出一个 name属性为undefined的a标签。
link(url)
不推荐使用, 把字符串显示为链接,只在页面中才会有效果。如果没有传入参数,则会输出一个href属性为undefined的a标签。
@param url必需,规定要链接的 URL。
fontcolor(color)
不推荐使用,返回指定的颜色的字符串。只在页面中才会有效果如果没有传入参数,则会输出一个color属性为undefined的font标签。
@param color必需。为字符串规定 font-color。该值必须是颜色名(red)、RGB 值(rgb(255,0,0))或者十六进制数(#FF0000)。
fontsize(size)
不推荐使用, 返回指定的字体大小的字符串。只在页面中才会有效果。如果没有传入参数,则会输出一个size属性为undefined的font标签。
@param size 参数必须是从 1 至 7 的数字,数字越大字体越大。
详细方法
1) big()
使用方法
结果
varName.big()
<big>varName_val</big>
2) small()
使用方法
结果
varName.small()
<small>varName_val</small>
3) blink()
使用方法
结果
varName.blink()
<blink>varName_val</blink>
4) bold()
使用方法
结果
varName.bold()
<b>varName_val</b>
5) italics()
使用方法
结果
varName.italics()
<i>varName_val</i>
6) strike()
使用方法
结果
varName.strike()
<strike>varName_val</strike>
7) fixed()
使用方法
结果
varName.fixed()
<tt>varName_val</tt>
8) sub()
使用方法
结果
varName.sub()
<sub>varName_val</sub>
9) sup()
使用方法
结果
varName.sup()
<sup>varName_val</sup>
10) anchor(anchorname)
使用方法
结果
varName.anchor(param1)
<a name="param1">varName_val</a>
11) link(url)
使用方法
结果
varName.link(param1)
<a href="param1">varName_val</a>
12) fontcolor(color)
使用方法
结果
varName.fontcolor(param1)
<font color="param1">varName_val</font>
13) fontsize(size)
使用方法
结果
varName.fontsize(param1)
<font size="param1">varName_val</font>
编码相关
概述
方法名
描述
参数
charAt(index)
返回特定位置的字符,不提供参数就返回第一个字符的字符,提供游标值,就返回指定游标的字符
@param index 非必需,一个介于0 和字符串长度减1之间的正整数。 (0~varName.length-1),如果不是一个数值,则默认为 0。
charCodeAt(index)
返回0到65535之间的整数,表示给定索引处的UTF-16代码单元 (在 Unicode 编码单元表示一个单一的 UTF-16 编码单元的情况下,UTF-16 编码单元匹配 Unicode 编码单元。但在——例如 Unicode 编码单元 > 0x10000 的这种——不能被一个 UTF-16 编码单元单独表示的情况下,只能匹配 Unicode 代理对的第一个编码单元) 。
@param index 一个大于等于 0,小于字符串长度的整数。(0~varName.length-1),如果不是一个数值,则默认为 0。
codePointAt(pos)
测试中, 返回使用UTF-16编码的给定位置的值的非负整数。
@param pos 这个字符串中需要转码的元素的位置。
normalize([form])
测试中, 返回调用字符串值的Unicode标准化形式。
@param form 四种 Unicode 正规形式 "NFC", "NFD", "NFKC", 以及 "NFKD" 其中的一个, 默认值为 "NFC".
fromCharCode(num1, ..., numN)
返回一个字符串,而不是一个 String 对象。由于 fromCharCode 是 String 的静态方法,所以应该像这样使用:String.fromCharCode(),而不是作为你创建的 String 对象的方法。
@param num1, ..., numN 一组序列数字,表示 Unicode 值。
fromCodePoint(num1, …, numN)
不推荐使用, 返回使用 Unicode 编码创建的字符串,如果传入无效的 Unicode 编码,将会抛出一个RangeError (例如: "RangeError: NaN is not a valid code point")。
@param num1, ..., numN 一组序列数字,表示 Unicode 值。
详细方法
1) charAt(index)
字符串中的字符从左向右索引,第一个字符的索引值为0,最后一个字符(假设该字符位于字符串 varName 中)的索引值为varName.length - 1。 如果指定的index值超出了该范围,则返回一个空字符串。而且本方法不管你传入多少参数,这边只会处理传入的第一个参数值,如果传进来为小数,这个方法是向上取整,举个栗子,你传入的值是1.2,这边就认为你传入的是2。
但是请注意,这个方法只能检测打印包含基本多文种平面(BMP)中的字符,如果字符串中包含的内容不在BMP中,打印的结果就会乱码。
使用方法
结果
oString.charAt()
h
oString.charAt(oString.length-1)
e
错误示例
使用方法
结果
oString.charAt(1.2)
e
oString.charAt(1,2,3)
e
oString.charAt(-2)
空字符串
oString.charAt(oString)
h
oString.charAt(true)
e
oString.charAt(false)
h
oString.charAt(null)
h
oString.charAt(undefined)
h
oString.charAt(NaN)
h
oString.charAt(oo)
h
oString.charAt(oNum)
空字符串
oString.charAt(oArray)
h
oString.charAt(oDate)
空字符串
oString.charAt(oString.length)
空字符串
2) charCodeAt()
Unicode 编码单元(code points)的范围从 0 到 1,114,111(0x10FFFF)。开头的 128 个 Unicode 编码单元和 ASCII 字符编码一样。关于 Unicode 的更多信息,可查看 JavaScript Guide。
注意,charCodeAt 总是返回一个小于 65,536 的值。这是因为高位编码单元(higher code point)使用一对(低位编码(lower valued))代理伪字符("surrogate" pseudo-characters)来表示,从而构成一个真正的字符。
因此,为了查看或复制(reproduce)65536 及以上编码字符的完整字符,需要在获取 charCodeAt(i) 的值的同时获取 charCodeAt(i+1) 的值(如同查看/reproducing 拥有两个字符的字符串一样),或者改为获取 codePointAt(i) 的值。
如果指定的 index 小于 0 或不小于字符串的长度,则 charCodeAt 返回 NaN。而且本方法不管你传入多少参数,这边只会处理传入的第一个参数值,如果传进来为小数,这个方法是向上取整,举个栗子,你传入的值是1.2,这边就认为你传入的是2。
返回值是一表示给定索引处(varName中index索引处)字符的 UTF-16 代码单元值的数字;如果索引超出范围,则返回 NaN。如果你想要整个代码点的值,使用 codePointAt()。
向后兼容:在历史版本中(如 JavaScript 1.2),charCodeAt 返回一个数字,表示给定 index 处字符的 ISO-Latin-1 编码值。ISO-Latin-1编码集范围从 0 到 255。开头的 0 到 127 直接匹配 ASCII 字符集。
使用方法
结果
oString.charCodeAt()
104
oString.charCodeAt(oString.length-1)
101
错误示例
使用方法
结果
oString.charCodeAt(1.2)
101
oString.charCodeAt(1,2,3)
101
oString.charCodeAt(-2)
NaN
oString.charCodeAt(oString)
104
oString.charCodeAt(true)
101
oString.charCodeAt(false)
104
oString.charCodeAt(null)
104
oString.charCodeAt(undefined)
104
oString.charCodeAt(NaN)
104
oString.charCodeAt(oo)
104
oString.charCodeAt(oNum)
NaN
oString.charCodeAt(oArray)
104
oString.charCodeAt(oDate)
NaN
oString.charCodeAt(oString.length)
NaN
常用的编码表
字符
对应的unicode值
\t(水平制表符)
9
\n(换行符)
10
\s(空格)
32
!(感叹号)
33
"
34
#
35
$
36
%
37
&
38
'
39
(
40
)
41
*
42
+
43
,
44
-
45
.(英文句号)
46
/
47
0
48
1
49
2
50
3
51
4
52
5
53
6
54
7
55
8
56
9
57
:
58
;
59
<
60
=
61
>
62
?
63
@
64
A
65
Z
90
[
91
|92
]
93
^
94
_
95
`
96
a
97
z
122
{
123
(中竖线)
124
}
125
~
126
3) codePointAt(pos)
返回值是在字符串中的给定索引的编码单元体现的数字,如果指定的 index 小于 0 或不小于字符串的长度则返回 undefined 。如果,则 codePointAt 返回 undefined。而且本方法不管你传入多少参数,这边只会处理传入的第一个参数值,如果传进来为小数,这个方法是向上取整,举个栗子,你传入的值是1.2,这边就认为你传入的是2。
如果在索引处开始没有UTF-16 代理对,将直接返回在那个索引处的编码单元。可以将codePointAt()看成更完整版本的charCodeAt(),因为对于BMP中的所有字符,这俩方法执行结果相同,只有传递非BMP的码位作用参数时,二者执行结果才有可能不同。
codePointAt()对于非BMP会返回完整的码位,即使这个码位包含多个编码单元,但是charCodeAt()仅仅返回位置pos处的第一个编码单元。
Surrogate Pair是UTF-16中用于扩展字符而使用的编码方式,是一种采用四个字节(两个UTF-16编码)来表示一个字符,称作代理对。
但是请注意,由于codePointAt()是ES5开始提出来的,所以在Safari浏览器不支持,其他浏览器比较新的版本才支持。
使用方法
结果
oString.codePointAt()
104
oString.codePointAt(oString.length-1)
101
错误示例
使用方法
结果
oString.codePointAt(1.2)
101
oString.codePointAt(1,2,3)
104
oString.codePointAt(-2)
undefined
oString.codePointAt(oString)
104
oString.codePointAt(true)
101
oString.codePointAt(false)
104
oString.codePointAt(null)
104
oString.codePointAt(undefined)
104
oString.codePointAt(NaN)
104
oString.codePointAt(oo)
104
oString.codePointAt(oNum)
undefined
oString.codePointAt(oArray)
104
oString.codePointAt(oDate)
undefined
oString.codePointAt(oString.length)
undefined
4) normalize([form])
参数缩写
参数全称
参数中文含义
NFC
Normalization Form Canonical Composition
规范化形式规范组合
NFD
Normalization Form Canonical Decomposition
规范化形式规范分解
NFKC
Normalization Form Compatibility Composition
规范化形式兼容性组合
NFKD
Normalization Form Compatibility Decomposition
规范化形式兼容性分解
警告
如果给 form 传入了非法的参数值, 则会直接抛出 RangeError 异常,RangeError: The normalization form should be one of NFC, NFD, NFKC, NFKD,不会自行处理,是一个很高冷的方法哦!
而且这个和DOM方法中的normalize()没有任何关联哦,不要弄混了。
如果你字符串中没有什么非BMP的内容,那么你使用这个方法其实没有什么效果,返回的就是varName的varName_val没有做什么改变的。目前我主要测试的样例使用这个方法之后,没有什么直观的感受,如果之后遇见了不同的效果,我再来补充。
使用方法
结果
varName.normalize()
varName_val
varName.normalize("NFC")
varName_val
varName.normalize("NFD")
varName_val
varName.normalize("NFKC")
varName_val
varName.normalize("NFKD")
varName_val
5) fromCharCode(num1, …, numN)
尽管绝大部分常用的 Unicode 值可以用一个 16-bit 数字表示(正如 JavaScript 标准化过程早期),并且对于绝大部分值 fromCharCode() 返回一个字符(即对于绝大部分字符 UCS-2 值是 UTF-16 的子集),但是为了处理所有的 Unicode 值(至 21 bits),只用 fromCharCode() 是不足的。 由于高位编码字符是用两个低位编码(lower value)表示形成的一个字符,因此String.fromCodePoint() (ES6 草案的一部分)被用来返回这样一对低位编码,从而可以完全表示这些高位编码字符。
如果传进来参数为小数,这个方法是向上取整,举个栗子,你传入的值是1.2,这边就认为你传入的是2,不传参数的时候或者传一些不能识别的参数会方法返回空字符串。
使用方法
结果
objectName.fromCharCode(65)
A
错误示例
使用方法
结果
objectName.fromCharCode()
空字符串
objectName.fromCharCode(65.2)
A
objectName.fromCharCode(65.8,66,67)
ABC
objectName.fromCharCode(-2)
空字符串
objectName.fromCharCode(oString)
空字符串
objectName.fromCharCode(true)
乱码
objectName.fromCharCode(false)
空字符串
objectName.fromCharCode(null)
空字符串
objectName.fromCharCode(undefined)
空字符串
objectName.fromCharCode(NaN)
空字符串
objectName.fromCharCode(oo)
空字符串
objectName.fromCharCode(oNum)
D
objectName.fromCharCode(oArray)
空字符串
objectName.fromCharCode(oDate)
乱码
fromCodePoint(num1, …, numN)
因为fromCodePoint()是String的一个静态方法,所以只能通过 String.fromCodePoint()这样的方式来使用,不能在你创建的String对象实例上直接调用。
相当是fromCharCode()升级版,在处理非BMP内容功能包容性更强些,但是对传入的参数要求更严格一些。
警告
如果传入无效的 Unicode 编码,将会抛出一个RangeError (例如: RangeError: NaN is not a valid code point)。比如像小数,科学计数,undefined,负数,字符串,数组,时间戳等等,如果传入这些值,方法体会直接报错,不会再执行下面的,不会自行处理,是一个很高冷的方法哦!
使用方法
结果
objectName.fromCodePoint(65)
A
objectName.fromCodePoint()
空字符串
objectName.fromCodePoint(oNum)
D
objectName.fromCodePoint(true)
乱码
objectName.fromCodePoint(false)
乱码
objectName.fromCodePoint(null)
乱码
错误示例
使用方法
结果
objectName.fromCodePoint(65.2)
RangeError
objectName.fromCodePoint(65.8,66,67)
RangeError
objectName.fromCodePoint(-2)
RangeError
objectName.fromCodePoint(oString)
RangeError
objectName.fromCodePoint(undefined)
RangeError
objectName.fromCodePoint(NaN)
RangeError
objectName.fromCodePoint(oo)
RangeError
objectName.fromCodePoint(oArray)
RangeError
objectName.fromCodePoint(oDate)
RangeError
本文使用 mdnice 排版