我将从代码开始:
var s = ["hi"];
console.log(s);
s[0] = "bye";
console.log(s);
Run Code Online (Sandbox Code Playgroud)
简单吧?对此,Firebug说:
["hi"]
["bye"]
Run Code Online (Sandbox Code Playgroud)
很棒,但Chrome的JavaScript控制台(7.0.517.41 beta)说:
["bye"]
["bye"]
Run Code Online (Sandbox Code Playgroud)
我做错了什么,或者Chrome的JavaScript控制台在评估我的阵列方面特别懒惰?
我对JavaScript或Chrome控制台的行为感到非常困惑.有人可以帮我理解吗?
基本上我有以下JavaScript代码,而不是嵌套在任何函数或其他范围内:
var initial_array = [];
function initialiseArray() {
initial_array = [2, 9, 8, 6, 0, 2, 1];
}
function copyToNewArray() {
var copied_array = [];
console.log("COPIED 1", copied_array);
for (var i = 0; i < initial_array.length; i++) {
var copy = initial_array[i];
copied_array.push(copy);
}
console.log("COPIED 2", copied_array);
}
initialiseArray();
copyToNewArray();
Run Code Online (Sandbox Code Playgroud)
我希望COPIED 1打印[]- 因为变量尚未分配 - 而是打印[2, 9, 8, 6, 0, 2, 1]- 即分配后的值.
为什么?
顺便说一句,如果用8-11替换第8行initial_array = copied_array,那么RESULTS 1确实打印为[].这与使用有关 …
我目前正在忙着写一个javascript库.在那个库中,我想提供一些关于控制台内容的日志.
function log () {
if ((window && typeof (window.console) === "undefined") || !enableLogging) {
return false;
}
function currentTime() {
var time = new Date();
return time.getHours() + ':' + time.getMinutes() + ':' + time.getSeconds() + '.' + time.getMilliseconds();
}
var args = [];
args.push(currentTime());
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
switch (arguments[0]) {
case severity.exception:
if (window.console.exception) {
window.console.exception.apply(console, args);
} else {
window.console.error.apply(console, args);
}
break;
case severity.error:
window.console.error.apply(console, args);
break; …Run Code Online (Sandbox Code Playgroud) Chrome的js控制台在删除值之前显示一个删除值的数组.为什么?
var list=[];
list.push("one");
list.push("two");
list.push("three");
console.log(list); //["two", "three", undefined × 1]
$("#output").append(JSON.stringify(list));//["one","two","three"]
list.shift();
$("#output").append($("<br>"));
console.log(list); //["two", "three"]
$("#output").append(JSON.stringify(list));//["two","three"]
Run Code Online (Sandbox Code Playgroud)
我有一段Javascript/Coffeescript似乎无序执行.
console.log list
console.log list[card_number]
if list[card_number]
console.log "MATCHES"
new_card = list[card_number]
else
console.log "NO MATCHES"
new_card = create_new_card(card_number)
create_new_card: (card_number) ->
new_card =
card_number: card_number
list[new_card.card_number] = new_card
return new_card
Run Code Online (Sandbox Code Playgroud)
每次运行时,第一个console.log显示包含new_card的卡片列表,即使尚未创建卡片.然后else无论运行多少次,它总是会击中它.
如果我list[<card_number>]在此代码运行后尝试在Javascript控制台中运行,我会收到正确的对象,但每次代码运行时,都会发生相同的事件.