<tfoot id='iL03n'></tfoot>

    • <bdo id='iL03n'></bdo><ul id='iL03n'></ul>

    <small id='iL03n'></small><noframes id='iL03n'>

    1. <legend id='iL03n'><style id='iL03n'><dir id='iL03n'><q id='iL03n'></q></dir></style></legend>
    2. <i id='iL03n'><tr id='iL03n'><dt id='iL03n'><q id='iL03n'><span id='iL03n'><b id='iL03n'><form id='iL03n'><ins id='iL03n'></ins><ul id='iL03n'></ul><sub id='iL03n'></sub></form><legend id='iL03n'></legend><bdo id='iL03n'><pre id='iL03n'><center id='iL03n'></center></pre></bdo></b><th id='iL03n'></th></span></q></dt></tr></i><div id='iL03n'><tfoot id='iL03n'></tfoot><dl id='iL03n'><fieldset id='iL03n'></fieldset></dl></div>

      为什么我可以在javascript中更改常量对象

      时间:2024-04-19

      <small id='Fktnw'></small><noframes id='Fktnw'>

      <i id='Fktnw'><tr id='Fktnw'><dt id='Fktnw'><q id='Fktnw'><span id='Fktnw'><b id='Fktnw'><form id='Fktnw'><ins id='Fktnw'></ins><ul id='Fktnw'></ul><sub id='Fktnw'></sub></form><legend id='Fktnw'></legend><bdo id='Fktnw'><pre id='Fktnw'><center id='Fktnw'></center></pre></bdo></b><th id='Fktnw'></th></span></q></dt></tr></i><div id='Fktnw'><tfoot id='Fktnw'></tfoot><dl id='Fktnw'><fieldset id='Fktnw'></fieldset></dl></div>

          • <tfoot id='Fktnw'></tfoot>
            <legend id='Fktnw'><style id='Fktnw'><dir id='Fktnw'><q id='Fktnw'></q></dir></style></legend>
              <bdo id='Fktnw'></bdo><ul id='Fktnw'></ul>
                <tbody id='Fktnw'></tbody>

                本文介绍了为什么我可以在javascript中更改常量对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我知道 ES6 还没有标准化,但是 很多浏览器目前都支持 const JS 中的关键字.

                I know that ES6 is not standardized yet, but a lot of browsers currently support const keyword in JS.

                在规范中是这样写的:

                常量的值不能通过重新赋值来改变,并且常量不能重新声明.正因为如此,虽然是可以在不初始化的情况下声明一个常量,它将是这样做没用.

                The value of a constant cannot change through re-assignment, and a constant cannot be re-declared. Because of this, although it is possible to declare a constant without initializing it, it would be useless to do so.

                当我做这样的事情时:

                const xxx = 6;
                xxx = 999;
                xxx++;
                const yyy = [];
                yyy = 'string';
                yyy = [15, 'a'];
                

                我看到一切正常 xxx 仍然是 6yyy[].

                I see that everything is ok xxx is still 6 and yyy is [].

                但是如果我这样做 yyy.push(6);yyy.push(1);,我的常量数组变了.现在它是 [6, 1] 顺便说一句,我仍然无法用 yyy = 1; 更改它.

                But if I do yyy.push(6); yyy.push(1);, my constant array has been changed. Right now it is [6, 1] and by the way I still can not change it with yyy = 1;.

                我这是一个错误,还是我遗漏了什么?我在最新的 chrome 和 FF29 中试了一下

                I this a bug, or am I missing something? I tried it in the latest chrome and FF29

                推荐答案

                文档说明:

                ...常数不能通过重新赋值来改变
                ...常量不能重新声明

                ...constant cannot change through re-assignment
                ...constant cannot be re-declared

                当您添加到数组或对象时,您并没有重新分配或重新声明常量,它已经被声明和分配,您只是添加到常量指向的列表"中.

                When you're adding to an array or object you're not re-assigning or re-declaring the constant, it's already declared and assigned, you're just adding to the "list" that the constant points to.

                所以这很好用:

                const x = {};
                
                x.foo = 'bar';
                
                console.log(x); // {foo : 'bar'}
                
                x.foo = 'bar2';
                
                console.log(x); // {foo : 'bar2'}  
                

                还有这个:

                const y = [];
                
                y.push('foo');
                
                console.log(y); // ['foo']
                
                y.unshift("foo2");
                
                console.log(y); // ['foo2', 'foo']
                
                y.pop();
                
                console.log(y); // ['foo2']
                

                但这些都不是:

                const x = {};
                x = {foo: 'bar'}; // error - re-assigning
                
                const y = ['foo'];
                const y = ['bar']; // error - re-declaring
                
                const foo = 'bar'; 
                foo = 'bar2';       // error - can not re-assign
                var foo = 'bar3';   // error - already declared
                function foo() {};  // error - already declared
                

                这篇关于为什么我可以在javascript中更改常量对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:JavaScript中有常量吗? 下一篇:JavaScript 中的 const:何时使用它,是否有必要?

                相关文章

                    <bdo id='T4Yyk'></bdo><ul id='T4Yyk'></ul>
                  1. <i id='T4Yyk'><tr id='T4Yyk'><dt id='T4Yyk'><q id='T4Yyk'><span id='T4Yyk'><b id='T4Yyk'><form id='T4Yyk'><ins id='T4Yyk'></ins><ul id='T4Yyk'></ul><sub id='T4Yyk'></sub></form><legend id='T4Yyk'></legend><bdo id='T4Yyk'><pre id='T4Yyk'><center id='T4Yyk'></center></pre></bdo></b><th id='T4Yyk'></th></span></q></dt></tr></i><div id='T4Yyk'><tfoot id='T4Yyk'></tfoot><dl id='T4Yyk'><fieldset id='T4Yyk'></fieldset></dl></div>
                    <tfoot id='T4Yyk'></tfoot>

                    <legend id='T4Yyk'><style id='T4Yyk'><dir id='T4Yyk'><q id='T4Yyk'></q></dir></style></legend>

                    <small id='T4Yyk'></small><noframes id='T4Yyk'>