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

Javascript中createVideo函数if语句未正确触发问题求助

问题解决:修复createVideo函数的逻辑错误

你的代码核心问题是错误地把参数和布尔值直接比较——比如你传的width是500(数字),却判断width === true,这永远不会成立;同时逻辑分支重复混乱,导致所有条件都无法触发,video变量甚至可能未被赋值。

下面是完全符合你要求的修复后代码:

function createVideo(src, width, controls) {
  // 处理src,去除首尾空格
  const trimmedSrc = src.trim();
  // 初始化属性数组,先放入src属性
  const attributes = [`src="${trimmedSrc}"`];

  // 仅当width是有效正整数时,添加width属性
  if (Number.isInteger(width) && width > 0) {
    attributes.push(`width="${width}"`);
  }

  // 若controls为true,添加controls属性
  if (controls === true) {
    attributes.push('controls');
  }

  // 用单个空格拼接所有属性,生成最终video标签
  const video = `<video ${attributes.join(' ')}></video>`;
  console.log(video);
}

// 调用示例
createVideo(
  "http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4",
  500,
  false
);

关键修复说明:

  • 放弃穷举式的if分支,改用数组动态拼接属性,逻辑更清晰且易扩展
  • 用Number.isInteger(width) && width > 0精准判断有效整数width,满足要求4
  • 属性格式严格遵循规范:src="xxx"(等号前后无空格),属性间用单个空格分隔
  • 正确处理controls参数:仅当传入true时才添加该属性

运行修正后的代码,你的调用示例会输出:

<video src="http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4" width="500"></video>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:57:31