zoukankan      html  css  js  c++  java
  • javascript中alert()与console.log()的区别

    我们在做js调试的时候使用 alert 可以显示信息,调试程序,alert 弹出窗口会中断程序, 如果要在循环中显示信息,手点击关闭窗口都累死。而且 alert 显示对象永远显示为[object ]。 自己写的 log 虽然可以显示一些 object 信息,但很多功能支持都没有 console 好

    [1]alert()

        [1.1]有阻塞作用,不点击确定,后续代码无法继续执行

        [1.2]alert()只能输出string,如果alert输出的是对象会自动调用toString()方法

            e.g. alert([1,2,3]);//'1,2,3'

        [1.3]alert不支持多个参数的写法,只能输出第一个值

            e.g. alert(1,2,3);//1

    [2]console.log()

        [2.1]在打印台输出

        [2.2]可以打印任何类型的数据

            e.g. console.log([1,2,3]);//[1,2,3]

        [2.3]支持多个参数的写法

            e.g. console.log(1,2,3)// 1 2 3

    alert 和 console.log 的结果不同?

    score = [1,2,3];
    sortedScore = [];
    console.log(score);
    sortedScore = score.sort(sortNumber)
    console.log(sortedScore);
    function sortNumber(a, b) {
      return b - a;
    }
    

      

    以上输出:
    [3, 2, 1]
    [3, 2, 1]

    但是改成alert:

    网页设计

    score = [1,2,3];
    sortedScore = [];
    alert(score);
    sortedScore = score.sort(sortNumber)
    alert(sortedScore);
    function sortNumber(a, b) {
      return b - a;
    }
    

      


    以上输出:
    1, 2, 3
    3, 2, 1

    为什么会这样?不应该都是:
    1, 2, 3
    3, 2, 1
    吗?

    经过一番研究发现是chrome实现的问题,对输出做了不太合适的优化,把console.log的实际执行推迟,相当于“惰性”求值,遇上数组、对象这样的引用类型就出上面的问题了。

  • 相关阅读:
    POJ 1201 Intervals 差分约束
    netframework2.0,asp.net2.0,vs.net 2005
    学习.net第一天
    VS.NET 2003 控件命名规范
    .Net生成共享程序集
    汉字的编码
    [转]用C#实现连接池
    SQL表自连接用法
    一道很好玩的OOP面试题,今天比较有空,所有做了一下
    C#编程规范(2008年4月新版)
  • 原文地址:https://www.cnblogs.com/good10001/p/4763817.html
Copyright © 2011-2022 走看看