[英]When taking values from an object, does unshift() change the source object?
当我设置以下代码的基本情况时,引发了这个问题:
function withoutReverse(str, arrayFor = []){
arrayFor.unshift(str[0]);
if (str.length === 1)
return arrayFor.join("");
else return withoutReverse(str.slice(1), arrayFor) }
let hola = "hello";
withoutReverse(hola);//-->olleh
我认为基数应该是str.length === 0
,因为我假设 unshift 从字面上将源 object 中的每个元素放入arrayFor
。 然后,我意识到这就是我使用slice
的目的。
我在 mdn 中没有找到确凿的信息。 我对吗? unshift()
并没有真正采用这些值(当存储在对象中时)? 如果是这样,在 memory 中是如何处理的?
谢谢
当您接到第 5 个电话时:
console.log(str) // "o"
arrayFor.unshift(str[0]); // str[0] === "o"
console.log(str.length) // "1" because accessing the property here does not change it.
因此,您的退出条件现在为真。
对于 JS 中的函数:
关于字符串的额外信息:
与某些编程语言(例如 C)不同,JavaScript 字符串是不可变的。 这意味着一旦创建了字符串,就无法修改它。
return 'cat'[1] // 返回 "a"
当使用括号表示法进行字符访问时,尝试删除这些属性或为这些属性赋值将不会成功。 所涉及的属性既不可写也不可配置。 (有关详细信息,请参阅 Object.defineProperty()。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.