如何解决Javascript数组函数参数传递
我正在看一个 javascript 教程,但我不懂一些语法。他正在教授增强的对象属性,我不明白接下来的两件事: 你可以看到他创建了一个变量(pricePropName 的值为“PRICE”。为什么他设置了 price 值,为什么它是大写的并且在两个引号之间?这两个点有什么作用(数组 PricePropName.toLowerCase 之后的那些点) ? 为什么他在数组之后以这种方式传递变量? 很抱歉这个菜鸟风格的问题,但我没有在任何地方找到它,我想了解它)
代码:
const pricePropName = "PRICE";
const calculator = (name,price) => {
return {
name,add(n1,n2) {
return n1 + n2;
},[pricePropName.toLowerCase()] : price;
}
}
const calc = calculator('casio',19.99);
log(calc.name);
log(calc.add(20,20));
log(calc.price);
解决方法
为什么他设置了价值价格,为什么它是大写的并且在两个引号之间?
他只是声明了一个名为 pricePropName
且值为 "PRICE"
的字符串。这两个引号只是您声明字符串文字的方式。至于为什么它是大写的,没有特别的原因,但可能是因为他可以稍后调用 toLowerCase()
方法。有关字符串的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
那两个点有什么作用
在这里,他声明了一个对象字面量。 object
是键值对,因此 :
之前的内容是 key
(或您访问值的方式),:
之后的内容是价值(您访问的内容)。
所以如果我像这样声明一个对象:
const obj = {
"one": 1
}
我有一个对象 obj
,带有 1 个键 "one"
和一个关联值 1
。要访问该值,我可以执行 obj.one
或 obj["one"]
对象中的键总是字符串,但您不必将它们用引号括起来。我可以像这样声明前一个对象:
const obj = {
one: 1
}
在现代 javascript 中,有一个简写,如果您有一个变量并将其添加到对象文字中,如果您想使用变量的名称作为键,则不需要声明键。所以,我也可以像这样声明前一个对象:
const one = 1;
const obj = {
one
}
最后要理解的是 [pricePropName.toLowerCase()]
周围的方括号。因为他在这里调用一个方法 (toLowerCase()
),所以他通常不能将它用作对象键,但是通过将它包装在 []
中,有点像说“这样做,然后以结果为关键”。
语法有点笨拙,所以我不推荐它 - 为了可读性,将其分解为变量要清晰得多。
所以,最后:
const calculator = (name,price) => {
return {
name,add(n1,n2) {
return n1 + n2;
},[pricePropName.toLowerCase()] : price;
}
}
是一个名为 calculator
的函数,它接受两个参数 name
和 price
,并返回一个具有 3 个键/值属性的对象字面量:
-
name
,在本例中指的是"casio"
-
add
,指的是将2个数字相加并返回结果的函数 -
price
,在本例中指的是19.99
最终对象将如下所示:
{
"name": "casio","add": function(n1,n2) {
return n1 + n2
},"price": 19.99
}
,
您基本上可以通过几种不同的方式调用/定义对象属性。
下面有示例,说明如何以不同方式执行此操作(所有方法都相同):
const city = "Wroclaw"
const country = "Poland"
const example = {
name: "Bob",['lastName']: "Smith",['AGE'.toLowerCase()]: 24,city,country: country
}
console.log(example)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。