超级码吏 2023-08-11 14:39 采纳率: 27.1%
浏览 31

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条回答 默认 最新

  • 家有娇妻张兔兔 优质创作者: Java技术领域 2023-08-11 15:02
    关注

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

    评论

报告相同问题?

问题事件

  • 修改了问题 8月11日
  • 修改了问题 8月11日
  • 创建了问题 8月11日