请求解析JavaScript单行多变量赋值代码的含义与读法
关于JavaScript变量声明代码的解释
嘿,刚好我对这种写法很熟悉,来给你掰扯清楚~这两行都是JavaScript里一次性声明多个变量的语法,算是比较常见的紧凑写法,我分别给你拆解:
第一行代码:var timer = duration, minutes, seconds;
作用
这一行其实同时完成了3件事:
- 声明并初始化变量
timer:把已经定义好的变量duration(大概率是一个表示时长的数值,比如倒计时总秒数)赋值给它 - 声明变量
minutes:暂时没有赋值,默认是undefined,后续应该用来存储计算后的分钟数 - 声明变量
seconds:同样暂时未赋值,默认是undefined,后续用来存储计算后的秒数
读法
口语化读的话可以是:「用var定义timer变量等于duration,同时还定义了minutes和seconds这两个变量」
如果要严谨一点就是:「通过var关键字声明三个变量timer、minutes、seconds,其中timer被初始化为duration的值,minutes和seconds未初始化」
第二行代码:var start = Date.now(), diff, minutes, seconds;
作用
和第一行逻辑一致,只是初始化的变量不同:
- 声明并初始化变量
start:赋值为Date.now()的返回值——这个方法会返回当前时间距离1970年1月1日零点的毫秒数,一般用来标记计时的起始时间点 - 声明变量
diff:未赋值,后续用来存储「当前时间 - 起始时间」的差值,也就是已经流逝的时长 - 再次声明
minutes和seconds:这里要注意,在同一个作用域里用var重复声明变量不会报错,只是相当于“再提一次”,不会覆盖之前的赋值(如果之前已经赋值的话)
读法
口语化版本:「用var定义start变量为当前时间的毫秒数,同时定义diff、minutes、seconds这几个变量」
严谨版本:「通过var关键字声明四个变量start、diff、minutes、seconds,其中start被初始化为Date.now()的返回值,其余变量未初始化」
补充说明
这种用逗号分隔一次性声明多个变量的写法,目的是把相关的变量放在同一行,让代码更紧凑。不过也有不少开发者更喜欢分开写(比如var timer = duration; var minutes; var seconds;),觉得可读性更强,两种写法功能完全一致,看团队规范或者个人习惯就好。
内容的提问来源于stack exchange,提问作者user9657909
相关产品推荐
相关产品推荐

