js中的string是只读的!!!

今天写排序的时候没看到string有sort方法
然后就打算自己实现快排,
想当然地觉得string能迭代就把它当作了array,跟其它语言搞混了...
比如str = "bca",str[0] = str[1],结果肯定不会变的 =_=,str依然是"bca"
所以我的排序爆栈了...被自己蠢到了...

此时突然回忆起一句话,ECMAScript规定string不可变,
也就是说我们平时看到的字符串拼接、字符串修改,都是踢走正主后的篡位小人
比如str = "Java", str += "Script"

  • 首先创建能容纳10个字符的字符串
  • 然后将"Java"和"Script"填充进去,变成"JavaScript"
  • 最后销毁"Java"和"Script"这两个字符串

最后又想起一句话,基本数据类型保存值 → 内容在栈中,引用数据类型保存地址 → 内容在堆中

至于为什么能迭代,浏览器爸爸实现的迭代器吧(T T), 所以字符串是只读的, 你可以用迭代器去读每一位,但你就是不可以改它

不经意间就忘掉了基础知识...

原文地址:https://www.cnblogs.com/xw172854/p/12028354.html

时间: 2024-10-09 02:29:46

js中的string是只读的!!!的相关文章

js中的String数据类型

string中包含一些特殊的字符字面量,又叫转义序列,\n 意思是换行,\t 意为制表,\b意为空格,\r回车,\\斜杠. 1.ECMAScript中字符串是不可变的. 2.转换字符串的方法:toString() 返回相应值的字符串形态.null和undefined没有此方法,其他都有. 3.在不知道要转换的值是不是null或undefined的情况下,可以使用转型函数String(),这个函数能将任意值转换成字符串. var value1=null; var value2=undefined;

JS中的String.Math.Date

//今天放假没看东西,贴上以前的基础,没事看着玩 // String->-> var myStr = "My name is LiuYashion";        console.log(    myStr.length        );                      //21        console.log(    myStr.charAt(0)        );                 //M        console.log(   

js中对String去空格

str为要去除空格的字符串: 去除所有空格: str = str.replace(/\s+/g,""); 去除两头空格: str = str.replace(/^\s+|\s+$/g,""); 去除左空格: str=str.replace( /^\s*/, ''); 去除右空格: str=str.replace(/(\s*$)/g, ""); SCRIPT LANGUAGE="JavaScript"> <!-- /

js基础篇string&amp;&amp;array(应YX同学面试复习要求 - -)

js中的数据类型一共有五个基本数据类型,分别是undefined,null,boolean,number,string. js中的Object类型中包括两大类型:number类型和array类型.而我们现在要说的就是string和array! string 1.length   可以取出字符串有多少个字符                                 "abc".length      结果:3 2.charAt    返回指定索引位置的字符 "abc&qu

js中String转Date类型并比较大小

1.比较常用的方法,但繁琐: 主要使用Date的构造方法:Date(int year , int month , int day) Java代码   <script> var str1 = "2009-8-9"; var arr1 = str1.split("-"); var date1 = new Date(arr1[0],parseInt(arr1[1])-1,arr1[2]); var str2 = "2009-8-4"; va

js中字符替换函数String.replace()使用技巧

String.replace( ) 简介 语法: var strings = string.replace(regexp, replacement) regexp :您要执行替换操作的正则表达式,如果传入的是一个字符串,那就会当作普通字符来处理,并且只会执行一次替换操作:如果是正则表达式,并且带有 global (g) 修饰符,则会替换所有出现的目标字符,否则,将只执行一次替换操作. replacement :您要替换成的字符. 返回值是执行替换操作后的字符串. 11 String.replac

在js中 把 json对象转化为String对象的方法

方法1: 使用js的扩展方法 ** * json对象转字符串形式 */ function json2str(o) { var arr = []; var fmt = function(s) { if (typeof s == 'object' && s != null) return json2str(s); return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; } for (v

js中String.prototype.format類似于.net中的string.formitz效果

String.prototype.format = function(args) { if (arguments.length>0) { var result = this; if (arguments.length == 1 && typeof (args) == "object") { for (var key in args) { var reg=new RegExp ("({"+key+"})","g&qu

JavaScript学习-js中的数组/Boolean类/字符串String类

JavaScript学习 [js中的数组] 1.数组的概念:是在内存中连续储存对个有序元素的结构 元素的顺序称为下标,通过下标查找对象元素. 2.数组的声明: ① 字面量声明:var arr1 = []; js中,同一数组,可以储存多种不同的数据类型: 例如: var arr1 = [1,"2",true,{"name":"hahhah"},[1,2]] ② new关键字声明: var arr2 = new Arry(参数) >>&g