相关疑难解决方法(0)

Chrome的JavaScript控制台是否懒于评估数组?

我将从代码开始:

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 arrays console logging google-chrome

116
推荐指数
4
解决办法
2万
查看次数

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

10
推荐指数
1
解决办法
5428
查看次数

记录复杂对象时内存泄漏

我目前正在忙着写一个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)

javascript memory-leaks

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

为什么Chrome显示一个值,因为它已经从数组中删除了?

可能重复:
Chrome的JavaScript控制台是否懒于评估数组?

Chrome的js控制台在删除值之前显示一个删除值的数组.为什么?

jsFiddle演示了这种行为.

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 google-chrome google-chrome-devtools

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

Javascript代码执行顺序陌生

我有一段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控制台中运行,我会收到正确的对象,但每次代码运行时,都会发生相同的事件.

javascript coffeescript

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