你不知道的JavaScript(三)字符串
2015-05-17 14:41
357 查看
JavaScript字符串很容易被认为本质就是字符数组,ECMAScript规范中字符串作为一种单独的string类型,它的底层实现可能是数组,也可能是其他数据结构,因不同的JavaScript引擎而异。就像c++语言一样,c++最新标准为国际化标准组织与2011年发布,不同的编译器(例如cl、gcc、g++等)对这套标准的实现都有所不同,甚至有些编译器还增加了一些个性化的元素。目前主流的JS引擎有SpiderMonkey(Mozilla浏览器使用的引擎)、V8引擎(Chrome浏览器引擎)等,这些引擎都是开源的,不仅仅可以用在浏览器中,一些商业游戏引擎(如Unity3d)中也有应用。
对于使用JS语言编写应用的程序员来说,我们属于用户,并不需要过多关注JS引擎是如何实现ECMAScript规范的。
正确认识JS字符串并不是字符数组是相当重要的,我们来看一下二者的异同点:
字符串和字符数组都有length属性,我们可以使用它来获取字符串(字符数组)的长度。都提供indexOf函数,该函数可以返回某个字符在字符串(字符数组)中的位置。都可以调用concat和其他字符串(字符数组)进行拼接,都可以使用下标形式获取字符串(字符数组)中的某一个字符。
接下来介绍两者不同的地方,
JavaScript字符串长度是不可变的,而字符数组的长度可以任意改变。
调用concat函数实际上产生了一个新的字符串,str的内容依然没变。使用+=运算符看上去好像str的长度发生改变,事实上也是产生了一个新的字符串复制给str变量。
JS字符串属于string类型,数组属于object类型,我们可以调用数组的reverse函数对字符进行反转,但这个方法在string中未定义。使用+=运算符对字符串和字符数组进行拼接时二者的差异也较大,具体情况请参考上面的代码。我们可以使用单目运算符正号’+’將字符串隐式转换成数字,但是字符数组不行,结果为NaN。
上面为二者的异同点,最后介绍一下將字符串转换成数字的其他方法。
除了上面的正号运算符’+’,我们还可以把字符串和数字0做减法运算或者调用parseInt函数將字符串转换成数字。
对于使用JS语言编写应用的程序员来说,我们属于用户,并不需要过多关注JS引擎是如何实现ECMAScript规范的。
正确认识JS字符串并不是字符数组是相当重要的,我们来看一下二者的异同点:
<script type="text/javascript"> var str = "hello"; var arr = ['h','e','l','l','o']; alert(str.length);//5 alert(arr.length);//5 alert(str.indexOf('e'));//1 alert(arr.indexOf('e'));//1 str.concat("world"); arr.concat(['w','o','r','l','d']); alert(str[0]);//h alert(arr[0]);//h </script>
字符串和字符数组都有length属性,我们可以使用它来获取字符串(字符数组)的长度。都提供indexOf函数,该函数可以返回某个字符在字符串(字符数组)中的位置。都可以调用concat和其他字符串(字符数组)进行拼接,都可以使用下标形式获取字符串(字符数组)中的某一个字符。
接下来介绍两者不同的地方,
JavaScript字符串长度是不可变的,而字符数组的长度可以任意改变。
str.concat("world"); str += "world"
调用concat函数实际上产生了一个新的字符串,str的内容依然没变。使用+=运算符看上去好像str的长度发生改变,事实上也是产生了一个新的字符串复制给str变量。
<script type="text/javascript"> var str = "hello"; var arr = ['h','e','l','l','o']; alert(typeof str);//string alert(typeof arr);//object //str.reverse();//error: reverse is undefined arr.reverse();//right str += "world"; arr += ['w','o','r','l','d']; alert(str);//helloworld alert(arr);//h,e,l,l,ow,o,r,l,d var str1 = "1234"; var arr1 = ['1','2','3','4']; alert(+str1);//1234 alert(+arr1);//NaN </script>
JS字符串属于string类型,数组属于object类型,我们可以调用数组的reverse函数对字符进行反转,但这个方法在string中未定义。使用+=运算符对字符串和字符数组进行拼接时二者的差异也较大,具体情况请参考上面的代码。我们可以使用单目运算符正号’+’將字符串隐式转换成数字,但是字符数组不行,结果为NaN。
上面为二者的异同点,最后介绍一下將字符串转换成数字的其他方法。
<script type="text/javascript"> var str = "1234"; alert(typeof (str - 0));//alert number alert(typeof parseInt(str));//alert number </script>
除了上面的正号运算符’+’,我们还可以把字符串和数字0做减法运算或者调用parseInt函数將字符串转换成数字。
相关文章推荐
- 你不知道的JavaScript(三)字符串
- 你不知道的JavaScript(三)字符串
- JavaScript字符串单引号和双引号的使用
- 你不知道的JavaScript(四)数值
- javascript字符串操作
- javascript 字符串处理函数
- javascript字符串截取的substring、substr和slice
- JavaScript基于扩展String实现替换字符串中index处字符的方法
- (转)JavaScript 字符串转换数字
- 几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
- javascript如何快速拼装html字符串?
- 在javascript中如何去除字符串两头的空格
- 你不知道的JavaScript博文参考书籍
- javascript字符串处理函数
- JavaScript查找字符串内所有正整数
- javascript在html页面插入字符串
- javascript线程解释(setTimeout,setInterval你不知道的事)
- javascript中split和整数字符串互转的用法。。。
- Javascript实现多行字符串