如何将对象用作函数中的参数以及如何调用函数

时间:2019-02-05 22:46:12

标签: javascript function object parameters

我的代码是分开工作的(对象可以打印,数学公式可以正确计算),但是我不明白如何在公式中连接对象并使其打印最终答案。

我唯一想尝试的是不同的参数名称,但我不知道参数如何工作。

// Assignment 2
// Write a function that accepts one parameter to calculate ...
// ... the surface area of the outside of a box


// Introducing the object & asking the user for the three measuremeants

let sides = {
    a: prompt ("Enter the measuremeants of side A"),
    b: prompt ("Enter the measuremeants of side B"),
    c: prompt ("Enter the measuremeants of side C")
    };

// console.log(sides.a + sides.b + sides.c);  - testing object

// Introducing the function

function calcArea(sides) {

// let a=1 let b=3 let c=4 - testing math formula
let surfaceArea = 2*a*b + 2*b*c + 2*a*c;
console.log("Side A=" + a + ", Side B=" + b + ", Side C=" + c);
console.log("The area is: " + surfaceArea);
};

//Recalling the function
calcArea(surfaceArea);

这些是我的程序应该执行的期望:

  • 创建一个对象变量,该变量将存储框的所有3个侧面的长度。
  • 提示用户3个边长,并使用属性a,b和c将它们存储在对象中。
  • 创建一个名为calcArea的函数,该函数接受一个参数,即我们之前创建的对象。使用 公式如下,计算并返回表面积。 (2ab + 2bc + 2ac)

  • 使用模板字符串显示框的三个侧面以及带有描述性文本的最终表面积。

例如:

Side A=3, Side B=4, Side C=5
The area is: 94

2 个答案:

答案 0 :(得分:2)

由于函数正在使用独立变量java -jarab,因此您可以将对象传递到函数中并解构c,{{1 }}和a属性,允许您将它们作为独立变量引用并在公式中使用它们:

b

在不解构或提取单个变量的情况下,您必须将函数内对cconst sides = { a: prompt("Enter the measuremeants of side A"), b: prompt("Enter the measuremeants of side B"), c: prompt("Enter the measuremeants of side C") }; function calcArea({ a, b, c }) { const surfaceArea = 2 * a * b + 2 * b * c + 2 * a * c; console.log("Side A=" + a + ", Side B=" + b + ", Side C=" + c); console.log("The area is: " + surfaceArea); }; calcArea(sides);a的每个引用更改为b,{{1 }}和c

sides.a

要同时使用模板文字,请使用反引号代替sides.b分隔符和串联:

sides.c

您可能还会注意到,通常最好使用const sides = { a: prompt("Enter the measuremeants of side A"), b: prompt("Enter the measuremeants of side B"), c: prompt("Enter the measuremeants of side C") }; function calcArea(sides) { const surfaceArea = 2 * sides.a * sides.b + 2 * sides.b * sides.c + 2 * sides.a * sides.c; console.log("Side A=" + sides.a + ", Side B=" + sides.b + ", Side C=" + sides.c); console.log("The area is: " + surfaceArea); }; calcArea(sides);而不是"-const sides = { a: prompt("Enter the measuremeants of side A"), b: prompt("Enter the measuremeants of side B"), c: prompt("Enter the measuremeants of side C") }; function calcArea({ a, b, c }) { const surfaceArea = 2 * a * b + 2 * b * c + 2 * a * c; console.log(`Side A=${a}, Side B=${b}, Side C=${c}`); console.log(`The area is: ${surfaceArea}`); }; calcArea(sides);是为了以后需要重新分配变量时使用。< / p>

答案 1 :(得分:0)

abcsides的属性/键,您必须通过该对象访问它们。另外,您的calcArea函数被设置为接受一个sides参数,但是您目前已经使用surfaceArea函数变量来调用它,该变量在当时并不在范围内。

let sides = {
    a: prompt ("Enter the measuremeants of side A"),
    b: prompt ("Enter the measuremeants of side B"),
    c: prompt ("Enter the measuremeants of side C")
    };

function calcArea(sides) {
  // To access object properties, use "dot notation" (object.property).
  // You can't simply try to access the property directly.
  let surfaceArea = 2 * sides.a * sides.b + 2 * sides.b* sides.c + 2 * sides.a * sides.c;
  console.log("Side A=" + sides.a + ", Side B=" + sides.b + ", Side C=" + sides.c);
  console.log("The area is: " + surfaceArea);
};

calcArea(sides);  // You have to pass your sides object into the function.