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;