多个问号"?"和冒号":"在一个语句中用javascript解释? (条件运算符)

时间:2016-08-10 13:55:33

标签: javascript conditional conditional-operator

我知道解释条件语句有多简单,比如

def sftp_walk(socket, remotepath):
    remotepath = remotepath.replace('\\', '/')
    path = remotepath
    files = []
    folders = []
    for f in socket.listdir_attr(remotepath.replace('\\', '/')):
        if S_ISDIR(f.st_mode):
            folders.append(f.filename)
        else:
            files.append(f.filename)
    print(path, folders, files)
    yield path, folders, files
    for folder in folders:
        new_path = os.path.join(remotepath.replace('\\', '/'), folder)
        for x in sftp_walk(socket, new_path):
            yield x


def get_all(socket, remotepath, localpath):
    remotepath = remotepath.replace('\\', '/')
    socket.chdir(os.path.split(remotepath)[0])
    parent = os.path.split(remotepath)[1]
    try:
        os.mkdir(localpath)
    except:
        pass
    for walker in sftp_walk(socket, parent):
        try:
            os.mkdir(os.path.join(localpath, walker[0]).replace('\\', '/'))
        except:
            pass
        for file in walker[2]:
            socket.get(os.path.join(walker[0], file).replace('\\', '/'), os.path.join(localpath, walker[0], file).replace('\\', '/'))

但我想知道如何解释这样的陈述?

condition ? expr1 : expr2 

无需解释这个长篇大论。我只需要知道当多个问号和冒号像这个例子一样使用时它意味着什么。

谢谢

3 个答案:

答案 0 :(得分:4)

Javascript是右关联的,因此您可以“从右到左”解决三元组问题。

答案 1 :(得分:3)

首先,

永远不要这样做。永远。要添加泰勒的(正确的)答案,如果你无法抗拒警笛歌曲,那么使用缩进对事物进行分组是可取的(对于'优先'的某些定义)。

var foo = a ?
  b:
  c ?
    d:
    e;

如果b是真实的,a d如果c是真的,那么 更容易看到foo将是e,或者tableView.delegate = self 否则。

答案 2 :(得分:-1)