- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,开始将我的一个 C# 程序移植到 Javascript,只是因为感觉这是熟悉它的好方法。但我的阵列遇到了问题;它们在对象内部,并且在不应该发生的情况下不断发生奇怪的变化。
我从第一个对象 RotorSetI 检查 _in 和 _out 值两次;首先是在创建对象之后,然后是在 RotorSetII 对象之后。
第一次检查显示_out具有给定的值。但在第二次检查时,它已更改为 RotorSetII 的 _out 值。
我将在下面发布代码位,但我完全感到困惑。 我做错了什么?
var RotorSetI = (function()
{
var app = {},
_in = new Array("P","4","K","Ö","7","M","T","U","G","Q","V","1","J","H","2","Ä","S","I","Y","D","R","X","E","N","W","8","C","B","L","3","5","0","6","Z","F","9","O","A");
_out = new Array("J","K","X","9","U","C","T","G","4","H","F","B","I","8","D","R","3","7","L","V","Ö","Y","N","1","W","0","S","A","6","Ä","Q","O","Z","P","E","2","5","M");
app.setIn = function()
{
return _in;
}
app.setOut = function()
{
return _out;
}
return app;
}());
console.log(RotorSetI.setIn());
console.log(RotorSetI.setOut()); /* <-- Still shows the right value */
/**
* ROTOR SET II
*/
var RotorSetII = (function()
{
var app = {},
_in = new Array("E","7","2","Ö","S","N","U","O","J","B","I","L","D","M","H","F","6","Q","P","0","Z","C","T","V","3","W","4","5","1","Y","X","9","Ä","K","8","R","A","G");
_out = new Array("Ä","6","V","S","H","B","K","F","N","P","M","X","C","W","I","5","Ö","0","4","3","Q","Y","J","Z","D","L","T","9","O","E","U","R","8","2","G","1","A","7");
app.setIn = function()
{
return _in;
}
app.setOut = function()
{
return _out;
}
return app;
}());
console.log(RotorSetI.setIn());
console.log(RotorSetI.setOut()); /* <-- Value has mysterious changed! */
这是输出:
["P", "4", "K", "Ö", "7", "M", "T", "U", "G", "Q", "V", "1", "J", "H", "2", "Ä", "S", "I", "Y", "D", "R", "X", "E", "N", "W", "8", "C", "B", "L", "3", "5", "0", "6", "Z", "F", "9", "O", "A"]
["J", "K", "X", "9", "U", "C", "T", "G", "4", "H", "F", "B", "I", "8", "D", "R", "3", "7", "L", "V", "Ö", "Y", "N", "1", "W", "0", "S", "A", "6", "Ä", "Q", "O", "Z", "P", "E", "2", "5", "M"]
["P", "4", "K", "Ö", "7", "M", "T", "U", "G", "Q", "V", "1", "J", "H", "2", "Ä", "S", "I", "Y", "D", "R", "X", "E", "N", "W", "8", "C", "B", "L", "3", "5", "0", "6", "Z", "F", "9", "O", "A"]
["Ä", "6", "V", "S", "H", "B", "K", "F", "N", "P", "M", "X", "C", "W", "I", "5", "Ö", "0", "4", "3", "Q", "Y", "J", "Z", "D", "L", "T", "9", "O", "E", "U", "R", "8", "2", "G", "1", "A", "7"]
最佳答案
您需要在 _in
声明末尾添加 ,
。您不小心创建了一个名为 _out
的全局变量,并在 RotorSetII
中覆盖了它。
var app = {},
_in = new Array(...), // <--
_out = new Array(...);
作为一般的专业提示,在 Javascript 中使用数组文字而不是 Array
构造函数来声明数组被认为是良好的做法。
_in = ["P", ...]
关于javascript - 数组值莫名其妙变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35444617/
echo "Language"; echo " Select... English(US) English(AU)
好吧,我真的不知道为什么会这样。我目前正在实现一个线程容器,它以分离的方式运行无限循环,限制在每次迭代之间的特定速度。 标题: class timeloop { public: std::th
我收到 System.InvalidOperationException: Collection was modified;枚举操作可能无法执行: ExceptionLoggingLibrary.Lo
我是一名优秀的程序员,十分优秀!