有人可以帮助我了解此函数在线发生的事情
function getContainer(container, defaultContainer) {
//this line below
container = typeof container === 'function' ? container() : container;
return ReactDOM.findDOMNode(container) || defaultContainer;
}
正在为容器分配typeof容器的结果,但是如果容器等于一个函数,请调用该函数。
我有点头晕。这段代码是从React组件Modal的材料ui文档中提取的
答案 0 :(得分:3)
这是在说以下话:
if
container
是一个将其分配给名为container
的变量的函数,该函数将被调用,else
将变量container
设置为参数container
传递给getContainer
函数。
您也可以这样写,可能更容易阅读:
if (typeof container === 'function') {
container = container();
} else {
container = container;
}
在您的示例中,它使用三元运算符,这是另一种编写if
/ else
语句的方式。您可以阅读更多here。
答案 1 :(得分:3)
等于:
if(typeof container === 'function')container= container();
else container = container;
会调用容器(如果它是一个函数)并将结果存储在名为container的变量中。不是,它什么也不做。
答案 2 :(得分:0)
首先,了解基本知识和我们引用js中的函数/方法的方式。
假设有一个名为容器的函数
function container() {
let name = 'Js';
return name;
}
console.log(container()); //js as we got the value here
console.log(typeof(container())) // string as this time we have value which of string type
console.log(typeof(container)) // function as we are pointig to function
当我们仅引用不带()的函数名称时,控制台中便具有完整的函数结构
console.log(container);
ƒ container() {
let name = 'Js';
return name;
}
要知道什么是typeof
所以在您的问题中,它会检查通过了什么,最后要知道的是
condition ? expr1 : expr2