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

BigQuery JS UDF中instanceof Date行为不符合预期问题咨询

问题复现

CREATE TEMPORARY FUNCTION test()
RETURNS BOOL
LANGUAGE js
AS
"""
const d = new Date();
return d instanceof Date;
""";
SELECT test();

返回false (非预期结果)

原因说明

instanceof 运算符的核心判断逻辑是:检查右侧构造函数的prototype属性是否存在于左侧实例对象的原型链上。
上述代码运行在BigQuery的JavaScript UDF环境中,该环境存在上下文隔离机制:通过new Date()创建出的日期实例,其所属的构造函数和当前作用域下可直接访问的Date构造函数不是同一个引用,因此Date.prototype不在日期实例的原型链上,最终返回false。

解决方案

不依赖和上下文绑定的instanceof判断,改用可稳定读取对象内部类型标记的Object.prototype.toString.call()方法做类型校验即可:

CREATE TEMPORARY FUNCTION test()
RETURNS BOOL
LANGUAGE js
AS
"""
const d = new Date();
return Object.prototype.toString.call(d) === '[object Date]';
""";
SELECT test();

返回true (符合预期结果)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:15:02