相关疑难解决方法(0)

Javascript子串是虚拟的吗?

如果我们有一个庞大的字符串,命名str1,说500万个字符,然后str2 = str1.substr(5555, 100)str2长100个字符,是的一个子str1起始于5555(或任何其他随机选择的位置).

JavaScript如何在str2内部存储?是复制字符串内容还是新字符串是虚拟的,只存储对原始字符串的引用以及位置和大小的值?

我知道这是依赖于实现的,ECMAScript标准(可能)没有定义字符串实现的内幕.但我想知道一些从内部了解V8或SpiderMonkey的专家,以澄清这一点.

谢谢

javascript string v8 substring spidermonkey

14
推荐指数
1
解决办法
978
查看次数

试图将字符串数组中的第一个字符大写,为什么这不起作用?

我是Javascript的初学者.我想写转换例如函数list-style-imagelistStyleImage.

我想出了一个功能,但它似乎无法正常工作.有人能指出我这里的问题吗?

var myStr = "list-style-image";

function camelize(str){
    var newStr = "";    
    var newArr = [];
    if(str.indexOf("-") != -1){
        newArr = str.split("-");
        for(var i = 1 ; i < newArr.length ; i++){
            newArr[i].charAt(0).toUpperCase();
        }       
        newStr = newArr.join("");
    }
    return newStr;
}

console.log(camelize(myStr));
Run Code Online (Sandbox Code Playgroud)

javascript arrays string character capitalization

9
推荐指数
4
解决办法
3万
查看次数

是每次调用javascript str.length还是只调用一次?

哪种方式更有效?有区别吗?

这个:

var str = 'abc';

if(str.length == 20) {
    //...
}

if(str.length == 25) {
    //...
}

// and so on
Run Code Online (Sandbox Code Playgroud)

或者这一个:

var str = 'abc';
var length = str.length;

if(length == 20) {
    //...
}

if(length == 25) {
    //...
}

// and so on
Run Code Online (Sandbox Code Playgroud)

javascript

8
推荐指数
1
解决办法
448
查看次数

Javascript字符串对象只读?

a=new String("Hello");
Run Code Online (Sandbox Code Playgroud)

字符串(

a[0]==="H" //true
a[0]="J"
a[0]==="J" //false
a[0]==="H" //true
Run Code Online (Sandbox Code Playgroud)

这是否意味着我只能使用字符串作为char的数组.split("")然后.join("")呢?


答案:是的,在Javascript strings are readonly(又名不变)这个问题的答案如下:

javascript string readonly

5
推荐指数
1
解决办法
2572
查看次数

localStorage存储大尺寸数据

我想使用localStorage存储大量数据(如800GB),根据http://arty.name/localstorage.html,我也使用Firefox,我改变了我的localStorage大小和缓存大小.所以尺寸不是问题.但是,我写了一些jquery,如下所示:

 $("a[href]").each(function(){
    $(this).click(function(event){
       localStorage.test += "somenewinformation";
      ...
Run Code Online (Sandbox Code Playgroud)

如果这个localStorage.test已经有大量的数据,如400GB,那么存储信息步骤将非常慢.当我点击一个链接时,jquery会等待我完成向localStorage.test附加的新信息,否则它将转到下一页,localStorage.test中的信息将全部丢失或localStorage.test将保持旧的值?我不明白的是,是否会生成一个新线程来执行此操作在后台存储,而在中间关闭浏览器是否会影响它.

对于凌乱的描述感到抱歉,并提前感谢!

javascript jquery click local-storage

5
推荐指数
2
解决办法
1万
查看次数

为什么 JavaScript 中的 String 是不可变的?

JavaScript 字符串是不可变的。这意味着一旦创建了字符串,就无法对其进行修改。但是,仍然可以根据对原始字符串的操作创建另一个字符串

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structs

我理解不可变的含义,但我需要知道他们为什么这样构建它以及这种不可变方法的价值是什么?

注意:我查阅了一些Java 参考资料,但我不是 Java 开发人员,我无法理解其中的术语(StringPool、hashcode ...)

javascript

5
推荐指数
0
解决办法
867
查看次数

如何进行字符串的突变?JavaScript

如果默认情况下对象是可变的,为什么在这种情况下它不起作用?如何制作对象“s”中键“a”的变异值?

var s = {
  a: "my string"
};

s.a[0] = "9"; // mutation
console.log(s.a); // doesn't work
Run Code Online (Sandbox Code Playgroud)

javascript mutable mutation

4
推荐指数
1
解决办法
4630
查看次数

在JavaScript中,为什么不能修改常量String,但可以修改常量数组

const name = 1;
name = 2;
Run Code Online (Sandbox Code Playgroud)

执行此JavaScript时出现错误:

TypeError: Assignment to constant variable.
    at Object.<anonymous> (/home/user01/JavaScript/scope.js:2:6)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:191:16)
    at bootstrap_node.js:612:3
Run Code Online (Sandbox Code Playgroud)

但是,在执行以下语句时,代码会成功执行.

const arr = [1,2,3];
arr[1] = 5;
Run Code Online (Sandbox Code Playgroud)

为什么我们能够修改数组,即使它被声明为常量.

javascript arrays const

4
推荐指数
1
解决办法
629
查看次数

Javascript和非常长的字符串

我遇到以下代码问题:

function showTableData()
{
    var tableArray;
    var x = 0;
    var theHTML;

    for (i = 0; i < 7032; i++)
    {
        if (x = 0)
        {
            theHTML = '<tr>' + 
                '<th scope="row" class="spec">' + partNum[i] + '</th>' + 
                '<td>' + Msrp[i] + '</td>' + 
                '<td>' + blah[i] + '</td>' + 
                '<td>' + blahs[i] + '</td>' + 
            '</tr>' + theHTML;
            x++;
        }else{
            theHTML = '<tr>' + 
                '<th scope="row" class="specalt">' + partNum[i] + '</th>' + 
                '<td class="alt">' + Msrp[i] + '</td>' + …
Run Code Online (Sandbox Code Playgroud)

javascript arrays performance jquery

3
推荐指数
1
解决办法
1万
查看次数

JavaScript 和大字符串,JavaScript 使用写时复制吗?

我想知道(希望能确认)JavaScript 是否以写时复制的方式管理其变量。这很重要,因为我最终可能会处理可能很大的字符串,其中很多。

var a, b;

a = $(".foo").html();
b = a;
Run Code Online (Sandbox Code Playgroud)

b深拷贝还是写时拷贝?我的代码将从写时复制中受益匪浅,因为在某些情况下我设置b为不同的值(即在大多数情况下我复制a,在其他情况下我设置为,例如,"on""off"。但是,它不会得到稍后修改。)

javascript copy-on-write

3
推荐指数
1
解决办法
1965
查看次数