Javascript 使用箭头功能和不使用箭头有什么区别?(专长.反应)[编辑]

Javascript 使用箭头功能和不使用箭头有什么区别?(专长.反应)[编辑],javascript,reactjs,arrow-functions,Javascript,Reactjs,Arrow Functions,我没有几个例子 首先 const{window}=props; 常量容器= 窗口!==未定义?()=>window().document.body:未定义; 这意味着如果窗口不是未定义的,它将在主体中显示某些内容。 但是使用下面的命令有什么区别呢 const容器= 窗口!==未定义?window().document.body:未定义; 其次是 在jsx中,我设置了onChange事件,这两个事件的工作方式不同 consthandleclick=()=>{console.log('hi');

我没有几个例子


首先

const{window}=props;
常量容器=
窗口!==未定义?()=>window().document.body:未定义;
这意味着如果窗口不是未定义的,它将在主体中显示某些内容。
但是使用下面的命令有什么区别呢

const容器=
窗口!==未定义?window().document.body:未定义;
其次是
在jsx中,我设置了onChange事件,这两个事件的工作方式不同

consthandleclick=()=>{console.log('hi');}
//=>当更改输入标记值时,此功能运行良好。
handleClick}type=“text”/>
//=>即使更改了输入标记值,它也不起作用。
  • 已编辑
    现在我清楚地理解了这些区别
1。
2.handleClick()}type=“text”/>
//1,2工作相同。但当您必须将“事件”或某些参数传递给
//函数,可以使用第二种方法。
//或者如果你想在“onChage”事件中设置多个函数,
2-1.  {handleClick();handleCheck();}}type=“text”/
3.
//这将立即调用函数(安装组件时)
//即使是“输入”标记也不会更改。
4.handleClick}type=“text”/>
//这只返回'handleClick'函数,因此'handleClick'不会被操作。
这篇文章 将使您更好地理解箭头函数和常规函数,然后您可以将其放在react本机上下文中

第二:输入字段上的第二个OnChange事件不起作用,因为您已经作为函数被清除

第一个OnChange工作,因为您正在调用handleClick decleared

使用函数声明或表达式创建的普通函数是可构造和可调用的。 但是,箭头函数只能调用,不能构造,也就是说,箭头函数永远不能用作构造函数。 因此,它们永远不能用new关键字调用

//正常函数
你好;
hello=函数(){
返回“你好,世界!”;
}
//箭头函数
你好;
你好=()=>{
返回“你好,世界!”;

}
正则函数和箭头函数有多种不同之处

1.语法 2.参数绑定 箭头函数没有参数绑定。但是,它们可以访问最近的非arrow父函数的arguments对象

3.使用此关键字 与常规函数不同,箭头函数没有自己的
this
。箭头函数中的
this
值在函数的整个生命周期内保持不变,并且始终与最近的非箭头父函数中的
this
值绑定

在这里可以找到更多信息


或者你可以找到更多的解释。

首先,在:

const container =
    window !== undefined ? () => window().document.body : undefined;
container
是一个函数,您可以调用它来获取
window().document.body
返回的值。但在:

const container =
    window !== undefined ? window().document.body : undefined;
容器
window().document.body
返回的值

在没有上下文的情况下很难判断哪个是正确的,但主要区别在于在哪个点读取
window().document.body的值:

const wVal={
文件:{正文:“A”}
};
常数window2=()=>wVal;
const now=window2!==未定义?window2().document.body:未定义;
常数差=窗口2!==未定义?()=>window2().document.body:未定义;
window2().document.body=“B”;
console.log(现在);//=>“A”

console.log(deffered());//=>“B”
在第一种情况下,容器是一个函数,在第二种情况下则不是。您没有显示在何处使用
容器
,因此很难说哪一个是“正确的”-尽管我不认为这是一个函数的明显需要,因为我怀疑该值是否会发生变化(如果它发生变化,则在React的上下文中会重新加载,因此应该自动重新计算
容器
)。至于底部的
onChange
示例-
onChange
需要一个函数(可选)将事件对象作为参数。假设
handleClick
是这样一个处理函数,那么
onChange={handleClick}
是正确的,
onChange={()=>handleClick}
什么都不做,只返回处理函数,不调用它。现在我想我理解了你的一般问题——简而言之:如果
a
是某种值,那么
()=>a
是一个不带参数的函数,它总是在不执行其他操作的情况下返回a
。比如说,数字2和总是返回2的函数之间有区别。哦,我完全理解!非常感谢。问题并不是问箭头函数和常规函数之间的区别(尽管我最初从标题中也期望它会问这个问题)我知道问题不是关于差异,而是要从更广泛的角度来处理问题,首先他必须理解箭头函数和正则函数,然后他才能知道它在React Native中使用的时间和原因
const container =
    window !== undefined ? window().document.body : undefined;