js,一个函数后面不加括号(),为什么也可以传参?这是什么语法?

js,一个函数后面不加括号(),为什么也可以传参?这是什么语法?

        var name='jjj';
        var todo='shopping';

        function hightlight(strings, ...values){
            console.log(strings);
            console.log(values);
        }

        var sentence=hightlight(`${name} is going to ${todo}`);
        console.log(sentence);
        // jjj is going to shopping
        // Array(0)
        // 这里理解没问题

        var sentence=hightlight`${name} is going to ${todo}`;
        console.log(sentence);
        // Array(3)
        //     0: ""
        //     1: " is going to "
        //     2: ""
        // Array(2)
        //     0: "jjj"
        //     1: "shopping"
        // 这里面为什么hightlight不加()也可以传参? 而且为什么这样写可以把字符串和变量字符串区分开?

这里面为什么hightlight不加()也可以传参? 而且为什么这样写可以把字符串和变量字符串区分开?

百度搜索过,没找到答案。搜出来的都是“括号里面把函数作为参数”

阅读 2.2k
2 个回答

函数调用可以使用 () 也可以使用 ``

function fn() {
  console.log(1)
}

fn()
fn``
只不过你使用模板字符串调用需要处理下参数有点麻烦

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题