javascript:变量名称之间的大括号的含义
由于其宽松的语法,但对于特殊字符的含义非常严格,所以我对javascript非常虚弱。javascript:变量名称之间的大括号的含义
在react-native-navigation
tutorial有此片段
static navigationOptions = ({ navigation }) => {
const {state, setParams} = navigation;
const isInfo = state.params.mode === 'info';
const {user} = state.params;
return {
title: isInfo ? `${user}'s Contact Info` : `Chat with
${state.params.user}`,
headerRight: (
<Button
title={isInfo ? 'Done' : `${user}'s info`}
onPress={() => setParams({ mode: isInfo ? 'none' : 'info'})}
/>
),
};
};
本来,我错误地输入第三行,因为这: const {isInfo} = state.params.mode === 'info';
和我的代码不能正常工作。
有什么用区别: const isInfo = state.params.mode === 'info';
因为下一行,有花括号包裹{user}
这对我来说是非常混乱,但是这几样小的事情是非常困难的谷歌,很抱歉,并提前感谢!
像你提到的基本上花括号是javascript中的对象。
所以使得这样的事情在JavaScript
const user = {
name: 'bob',
age: 23,
};
是使你可以用这样的用户对象:user.name
将返回bob
。
使用ES6,您可以从其他对象制作对象。
const {user} = state.params;
//user will be state.params.user
上面基本上是从物体state.params
拉动属性user
到一个新的变量。真的,他们正在做的是让你每次都不用写state.params.user
,而你可以写user
。
还有一些其他很酷的东西,你可以用这种技术做。你可以将数组和对象合并成新的常量,这很酷。
const test = {
...user,
anotherProperty: 'value',
};
有了反应,终极版(如果你使用它),你会看到很多这样的:Object.assign({}, state, {});
这是用来创建新对象与新状态覆盖国家的前面性质(因为redux需要一个新的对象)。这与使用{...state, ...newState}
的情况相同。
请有人提醒我这个...Object
方法被调用?
此行const isInfo = state.params.mode === 'info';
是声明bool的简写。根据是否state.params.mode === 'info'
,isInfo
将为真或假。
要翻译成以上的C++为您
if (state.params.mode === 'info') {
bool isInfo = true;
else {
bool isInfo = false;
}
我不记得是否有在C相似的对象数组++作为在JavaScript位认为JavaScript对象与定义键阵列。这样上面的{...state, ...newState}
就像是一个'重写'键。所以
int y = [1,2,3];
int x = [3,2,1];
for (i=0;i<=2;i++) {
y[i] = x[i];
}
这样的事情我觉得呢?
我明白了!这是一个非常明确的解释!非常感谢你! – Zennichimaro
@Zennichimaro我不太喜欢这个名字,因为你可以告诉^^^这个ES6 env,所以我知道你的感受! (y) – sourRaspberri
哈哈,是的。有很多我看到的JavaScript中的东西,我不明白,但不能谷歌! (是的,我用的是REDX !!)哦,不......我也没有得到你'高级'的东西,希望有人提醒你,哈哈 – Zennichimaro
这是ES6语法,表达式const {user} = state.params;
等于const user = state.params.user;
,并且const {isInfo} = state.params.mode === 'info';
将导致{isInfo: undefined}
。 欲了解更多信息,你可以看到here。
请检查本参考链接:https://*.com/questions/26999820/javascript-object-bracket-notation-navigation-on-left-side-of-assign –