2017-02-24 83 views
-1

我有一个add.js我做到这一点它是有效的混淆出口和进口ES6

const add = (a, b) => { 
    return a + b; 
} 

export default add; 

但为什么我不能做到这一点

export default add(a, b) => (a + b)?我将得到添加是未定义的。

另一个文件我有

回答

-1

因为这不是声明变量/常数在JS有道。 只有适当定义的var/constant才会获得空间(内存)。

因此,你需要做这样的

const add; 

let add; 

var add; 

可能是我的解释是不正确的,但是当你导出甚至我的意思在这种情况下,如果您尚未声明变量,则需要使用const,var或let来进行正确的声明。

+0

我可以知道,为什么它被降低了? – Nitesh

+0

*“即使在这种情况下出口时,您也需要使用const,var或let来正确声明”*否,您不需要。我不知道最后一段是否存在,当它是downvoted(措词表明不),但如果是这样,这可能是为什么。 (如果没有,可能是你不清楚你是在处理'export default'方面。) –

+0

谢谢你的解释,但我的意思是如果你已经声明了一个变量,那么它是好的,但如果你还没有声明你需要在使用导出时使用const/let/var。 最初,我没有提到最后一段,因为我提到了为什么用户不能直接使用任何名称与导出没有声明。 现在,我编辑了我的答案以获得更好的解释。顺便说一句,谢谢,我会记住下次有好的解释。 – Nitesh

4

如果你只是想给函数直接导出为默认值,你真的只是这样做(没有add):

export default (a, b) => a + b; 

进口将确定用于引用它的标识符。

如果你想要的功能有一个名称(如name财产填充除默认值以外的内容),你要么让它function功能:

export default function add(a, b) { return a + b; }; 

或做它两个部分,即那些您最初:

const add = (a, b) => a + b; 
export default add; 

(注意:()周围a + b中的箭头功能是不必要的,虽然当然你可以选择让它们作为风格的问题。)

+0

我可以做'export default add(a,b)=> {return a + b; };'? –

+0

@AlexYong:不,无论箭头功能是简洁还是冗长都无所谓。但是你可以做上面显示的'function'版本。 –