js 动态函数报错: [(intermediate value)(intermediate value)(intermediate value)] is not a function

img

代码是这样的:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>动态函数</title>
    </head>
    <body>
        <button onclick="BTNclick()">区分函数</button>


        <script>
            function BTNclick() {
                [2 < 6 ? "aaa" : "bbb"]("哈哈哈哈哈")
            }




            function aaa(data) {
                console.log(data);
            }

            function bbb(data) {
                console.log(data);
            }
        </script>
    </body>
</html>

把函数放在对象里的话,就没有问题:

img

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>动态函数</title>
    </head>
    <body>
        <button onclick="BTNclick()">区分函数</button>


        <script>
            function BTNclick() {
                functions[2 < 6 ? "aaa" : "bbb"]("哈哈哈哈哈");
            }

            const functions = {
                aaa(data) {
                    console.log("aaa:", data);
                },
                bbb(data) {
                    console.log("bbb:", data);
                }
            }
        </script>
    </body>
</html>

img

语法解析的问题
2 < 6 ? "aaa" : "bbb" 相当于个表达式 并不被认为是函数

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^