浏览代码

[JSInterp] Use `,` for join() with null/undefined argument
Eg: [1,2,3].join(null) -> '1,2,3'

dirkf 5 月之前
父节点
当前提交
1bc45b8b6c
共有 1 个文件被更改,包括 4 次插入3 次删除
  1. 4 3
      youtube_dl/jsinterp.py

+ 4 - 3
youtube_dl/jsinterp.py

@@ -1208,9 +1208,10 @@ class JSInterpreter(object):
                 elif member == 'join':
                 elif member == 'join':
                     assertion(isinstance(obj, list), 'must be applied on a list')
                     assertion(isinstance(obj, list), 'must be applied on a list')
                     assertion(len(argvals) <= 1, 'takes at most one argument')
                     assertion(len(argvals) <= 1, 'takes at most one argument')
-                    return (',' if len(argvals) == 0 else argvals[0]).join(
-                        ('' if x in (None, JS_Undefined) else _js_toString(x))
-                        for x in obj)
+                    return (',' if len(argvals) == 0 or argvals[0] in (None, JS_Undefined)
+                            else argvals[0]).join(
+                                ('' if x in (None, JS_Undefined) else _js_toString(x))
+                                for x in obj)
                 elif member == 'reverse':
                 elif member == 'reverse':
                     assertion(not argvals, 'does not take any arguments')
                     assertion(not argvals, 'does not take any arguments')
                     obj.reverse()
                     obj.reverse()