You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Chrome控制台中clear()可直接调用,log()却不行?

为什么Chrome控制台中clear()可直接调用,log()却不行?

核心原因分两点:

  1. clear是控制台命令行API + 不可枚举的window属性
    Chrome开发者控制台(DevTools)自带一套专属的命令行API,clear()就是其中之一,用于快速清空控制台。同时,Chrome为了兼容使用习惯,把console.clear映射成了window.clear,但这个window.clear是不可枚举属性——普通的console.log(window)或console.log(this)只会展示对象的可枚举属性,所以你看不到它。你可以用Object.getOwnPropertyDescriptor(window, 'clear')查看这个属性,会发现它的enumerable值为false。

  2. log并非控制台命令行API,仅属于console对象
    log()本身并不是控制台的内置命令,它是标准Web API中console对象的方法,只能通过console.log()来调用。控制台没有把log加入命令行API,也没有挂载到window对象上,所以直接输入log()会提示未定义。

简单验证:

  • 输入Object.getOwnPropertyDescriptor(window, 'clear'),会返回包含enumerable: false的属性描述对象,这就是它在window打印中隐身的原因。
  • 输入typeof clear返回function,输入typeof log返回undefined,能直观体现两者的区别。

内容的提问来源于stack exchange,提问作者RTYX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:30:58