V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
gramyang
V2EX  ›  JavaScript

一个 console. log 的问题

  •  1
     
  •   gramyang · 2020-06-22 21:19:58 +08:00 via Android · 3554 次点击
    这是一个创建于 1616 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚开始学 js,遇到一个问题:在 vue 中使用 axios 做请求,请求返回的数据用 alert 弹窗显示一下,结果数据报空且报 provisional request headers 。
    其中存在跨域的问题,但是后端进行了处理。
    折腾了半天都找不到原因,后来把 alert 改成 console. log,问题解决了。。。
    这是什么原理?
    15 条回复    2020-06-23 21:03:08 +08:00
    oukichi
        1
    oukichi  
       2020-06-22 21:25:14 +08:00
    代码也不贴,HTTP 请求也不贴,你让别人怎么帮你啊兄弟。
    我只能说这个和 alert 以及 console.log 半毛钱关系也么有
    gramyang
        2
    gramyang  
    OP
       2020-06-22 21:32:29 +08:00 via Android
    @oukichi 就是一个最简单的例子,前端 axios,后端 gin 跨域,同样的代码用 alert 就报错,用 console. log 就可以。
    zarte
        3
    zarte  
       2020-06-22 21:38:58 +08:00
    我猜你打印的时候变量确实是空的,console.log 比较特别在你点开查看的时候获取的是当前值。
    gramyang
        4
    gramyang  
    OP
       2020-06-22 21:45:40 +08:00 via Android
    @zarte 对,说 console. log 有延迟性
    1iuh
        5
    1iuh  
       2020-06-22 21:50:07 +08:00
    不是有延迟, 你输出的如果是一个对象, 你看到的值是当前的值,而不是你输出的时候的值。
    crystom
        6
    crystom  
       2020-06-22 22:46:57 +08:00
    是的,打印之前 json 一下才能确定值的
    shintendo
        7
    shintendo  
       2020-06-22 22:47:35 +08:00
    点进来前就知道是打印对象的问题,console.log 也就这点问题了
    xingyue
        8
    xingyue  
       2020-06-23 01:24:28 +08:00
    调试建议:
    1. debugger;
    2. console.log(JSON.stringify(response));

    但是你的问题我尝试复现但是无法复现,按理说 alert(response)至少也显示个[object Object],因为请求是已经拿到数据并通过了 axios 的解析了的;
    贴一个 demo 地址: https://codesandbox.io/s/elegant-field-e0r0v?file=/src/App.vue
    zhw2590582
        9
    zhw2590582  
       2020-06-23 08:35:13 +08:00
    alert 打印是五年多以前才用的 debug 方法
    VDimos
        10
    VDimos  
       2020-06-23 09:29:24 +08:00 via Android
    console.log 打印的是内存地址,点击展开它从内存中读的
    zhuweiyou
        11
    zhuweiyou  
       2020-06-23 10:44:59 +08:00
    log 和 alert 之前,先 JSON.stringify 。

    不过 provisional request headers 肯定跟你这个没关系。
    wxsm
        12
    wxsm  
       2020-06-23 12:19:24 +08:00
    对于 obj 来说,console 打印的是引用,并不是快照。alert 是快照,就这点区别。
    Chenamy2017
        13
    Chenamy2017  
       2020-06-23 12:45:34 +08:00
    #5 说的对
    jmyz0455
        14
    jmyz0455  
       2020-06-23 17:03:10 +08:00
    先了解一下引用对象
    shpasspass
        15
    shpasspass  
       2020-06-23 21:03:08 +08:00
    如果是在微信里打开的网页,一开始 alert 的话,会有很大概率不弹 alert 出来
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3455 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:40 · PVG 19:40 · LAX 03:40 · JFK 06:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.