JavaScript如何访问名称含连字符的启动参数(如sap-system)
解决方案
带连字符的对象属性无法通过点语法访问的核心原因是:JavaScript点语法要求属性名必须是合法标识符,而连字符-是算术运算符,写.sap-system时解析器会把它识别为「变量sap 减去 变量system」的运算逻辑,根本不会把sap-system识别为完整属性名,自然会报未定义错误。
正确取值方式是使用方括号字符串访问法,把带特殊字符的属性名作为字符串传入方括号即可:
const oStartupParameters = this.getComponentData().startupParameters; // 方括号内用引号包裹带连字符的完整属性名 const sSystemAlias = oStartupParameters["sap-system"][0];
补充注意点
- Fiori Launchpad返回的
startupParameters结构中,所有参数值默认都是数组类型,即便是单值配置项也需要取[0]下标拿到实际传值,这个规则和普通参数的取值逻辑一致。 - 所有包含特殊字符(连字符、空格、特殊符号、数字开头)的属性名,都可以通过方括号+字符串的方式访问;该写法同样兼容符合标识符规范的普通属性,不存在使用限制。
- 如果需要兼容参数未配置的异常场景,可以加可选链避免运行时报错:
const sSystemAlias = this.getComponentData().startupParameters?.["sap-system"]?.[0];
内容的提问来源于stack exchange,提问作者Alex Telitsin
相关产品推荐
相关产品推荐

