You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

JS报错SyntaxError: missing ) after argument list,求排查函数调用问题

排查并解决SyntaxError: missing ) after argument list错误

这个错误的根源出在你的函数调用方式上,咱们一步步拆解问题:

问题1:函数调用的参数传递语法错误

你当前的调用代码是:

toTimestampArti(strDate:06.01.2018 08:30:00, dk:10)

JavaScript里普通函数调用不能用key:value的键值对语法——这种写法是用来定义对象字面量的,而你的toTimestampArti函数定义是接收两个独立参数(strDatedk),不是单个对象参数。

问题2:日期字符串未加引号

06.01.2018 08:30:00是一个字符串值,但你没有用单引号或双引号包裹它,JavaScript会把这个表达式当成无效的语法(.在这里会被解析为属性访问,导致逻辑混乱),这也是触发语法错误的重要原因。

修正后的调用代码

把参数改成普通的位置传递,同时给日期字符串加上引号:

toTimestampArti("06.01.2018 08:30:00", 10)

额外注意:日期格式的兼容性问题

另外要提醒你,Date.parse()dd.mm.yyyy hh:mm:ss这种非标准格式的解析在不同浏览器里可能不一致(比如部分浏览器会把它当成mm.dd.yyyy)。如果要保证跨浏览器兼容,建议手动解析日期字符串,转换成ISO格式后再处理,比如:

function parseCustomDate(str) {
  // 拆分dd.mm.yyyy hh:mm:ss格式
  const [datePart, timePart] = str.split(' ');
  const [day, month, year] = datePart.split('.').map(Number);
  const [hour, minute, second] = timePart.split(':').map(Number);
  // 注意:月份是0-based,所以要减1
  return new Date(year, month - 1, day, hour, minute, second);
}

// 修改原函数,用手动解析替代Date.parse
function toTimestampArti(strDate, dk) {
  const birdk = 60000;
  const artidk = dk * birdk;
  const datum = parseCustomDate(strDate).getTime(); // 用getTime获取时间戳
  const timeoff = new Date().getTimezoneOffset() * 60 * 1000 * -1;
  const time = datum + timeoff + artidk;
  return time;
}

// 调用
toTimestampArti("06.01.2018 08:30:00", 10);

这样既能解决语法错误,又能避免日期解析的兼容性问题。

内容的提问来源于stack exchange,提问作者Geomatik Mühendisi

火山引擎 最新活动