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

JS报错Cannot assign to function call,能否对函数调用结果直接赋值

问题结论

JavaScript 不支持你示例里给函数调用结果直接赋值的写法,你遇到的Cannot assign to function call报错是符合JS语法规则的正常现象。

错误原因
  1. JS 语法规定:赋值操作的等号左侧(左值)必须是可写入的引用目标(比如变量、对象属性、数组元素),函数调用的返回值属于「值类型」,不是可被赋值的引用,天然不能放在等号左侧。
  2. 你当前编写的dom函数返回的是对应元素innerHTML的字符串值,相当于你的代码执行时等价于写了"当前元素的innerHTML文本" = maid,字符串常量本身不支持被赋值,自然会抛出错误。
可行实现方案

给你两种常用的改造方案,都能实现你要的简化操作需求:

方案1:返回DOM元素本身(更通用)

让函数直接返回DOM元素对象,后续你可以自由操作它的innerHTML、样式、事件等各种属性:

var maid = "Made In Yiappa";
function dom(i) {
    // 直接返回DOM元素,而非innerHTML的内容
    return document.getElementById(i);
}
// 赋值innerHTML的写法
dom("country").innerHTML = maid;

// 后续也可以操作其他属性,比如修改样式
dom("country").style.color = "red";

方案2:封装innerHTML读写逻辑(更简洁)

如果你就是想简化innerHTML的读写操作,可以给函数加第二个参数,传值时自动赋值,不传值时返回当前内容:

var maid = "Made In Yiappa";
function dom(i, value) {
    const el = document.getElementById(i);
    // 传了第二个参数就执行赋值逻辑
    if (value !== undefined) {
        el.innerHTML = value;
    } 
    // 没传参数就返回当前innerHTML内容
    else {
        return el.innerHTML;
    }
}

// 赋值写法,不需要写等号
dom("country", maid);

// 读取内容的写法
const currentContent = dom("country");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:45:05