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

实例化构造函数时浏览器报未定义,两段相似Calculator代码为何运行结果不同?

构造函数未定义问题原因

你遇到的问题是同形异义字符导致的标识符不匹配:

  • 第一段代码里你定义的构造函数名Сalculator首字符是西里尔字母「С」(Unicode编码为U+0421),和你实例化时用的拉丁字母「C」(Unicode编码为U+0043)视觉上几乎一致,但在JS语法中属于完全不同的字符。
  • 你定义的是西里尔С开头的Сalculator,但调用new时用的是拉丁C开头的Calculator,JS无法找到对应的构造函数定义,因此抛出未定义的报错。
  • 第二段代码的构造函数定义和实例化调用用的都是拉丁C开头的Calculator,标识符完全匹配,所以可以正常运行。

修复方案

将第一段代码的构造函数名首字母替换为标准拉丁字母C即可,修复后代码如下:

"use strict"

function Calculator() {
  this.read = function() {
    this.first = +prompt();
    this.second = +prompt();
  };
  this.sum = function() {
    return this.first + this.second;
  };
  this.mul = function() {
    return this.first * this.second;
  };
}

let calculator = new Calculator();
calculator.read();
alert(calculator.sum());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:45:04