帮给解释下这段代码的作用谢谢

刘已墨 2017-11-06 01:38:37


window.RightTriangle = function(o) {
var a = {
a: null,
b: null,
c: null,
A: null,
B: null,
C: 90
};
return o.a ? (a.a = o.a, o.b || o.c ? (o.b ? (a.b = o.b, a.c = Math.sqrt(Math.pow(a.a, 2) + Math.pow(a.b, 2))) : (a.c = o.c, a.b = Math.sqrt(Math.pow(a.c, 2) - Math.pow(a.a, 2))), a.B = t(Math.acos(a.a / a.c)), a.A = 90 - a.B) : (o.A || o.B) && (a = n(a, o.A, o.B), a.b = a.a * Math.tan(e(a.B)), a.c = a.a / Math.cos(e(a.B)))) : o.b ? (a.b = o.b, o.c ? (a.c = o.c, a.a = Math.sqrt(Math.pow(a.c, 2) - Math.pow(a.b, 2)), a.B = t(Math.acos(a.a / a.c)), a.A = 90 - a.B) : (o.A || o.B) && (a = n(a, o.A, o.B), a.a = a.b * Math.tan(e(a.A)), a.c = a.b / Math.cos(e(a.A)))) : o.c && (a.c = o.c, (o.A || o.B) && (a = n(a, o.A, o.B), a.a = a.c * Math.sin(e(a.A)), a.b = a.c * Math.cos(e(a.A)))),
a
}



...全文
335 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘已墨 2017-11-07
  • 打赏
  • 举报
回复
非常感谢 superwfei 的耐心解答。
文盲老顾 2017-11-06
  • 打赏
  • 举报
回复
其实这个代码划完层次很容易理解了,就是根据已有条件自动补全三角形的三个边长和三个角的角度
天际的海浪 2017-11-06
  • 打赏
  • 举报
回复
这样的代码从来不看
当作看不见 2017-11-06
  • 打赏
  • 举报
回复
引用 3 楼 superwfei 的回复:
把代码层次划出来,相对好理解一些
6666,我决定给你50分
文盲老顾 2017-11-06
  • 打赏
  • 举报
回复
window.RightTriangle = function(o) {	// 定义 window.RightTriangle 为一个函数,带有一个参数,形参名为 o
        var a = {		// 执行函数时初始化一个对象 a
            a: null,
            b: null,
            c: null,
            A: null,
            B: null,
            C: 90
        };
        return // 返回结果为对象 a
			o.a ? (
				// 当参数o具有a属性时
				a.a = o.a, // 初始化对象 a 的属性a 赋予参数的属性a
				o.b || o.c ? (
					// 当参数具有 b 属性或 c属性时
					o.b ? (
						// 如果参数具有 b 属性
						a.b = o.b, // 对象 a 的属性b赋予参数的属性b
						a.c = Math.sqrt(Math.pow(a.a, 2) + Math.pow(a.b, 2)) // 对象a的属性c赋值
					) : (
						// 如果参数不具有 b 属性,以c属性为依据计算
						a.c = o.c, // 对象 a 的属性c赋予参数的属性c
						a.b = Math.sqrt(Math.pow(a.c, 2) - Math.pow(a.a, 2)) // 对象a的属性b赋值
					), 
					a.B = t(Math.acos(a.a / a.c)), // 对象a的属性B赋值,t方法参见其他js内容
					a.A = 90 - a.B // 对象a的属性A赋值
				) : (o.A || o.B) && (
					a = n(a, o.A, o.B), // 当形参无 b 属性和 c 属性,且具有A或者B属性时,对象 a 从新赋值,方法 n 参见其他js内容 
					a.b = a.a * Math.tan(e(a.B)),
					a.c = a.a / Math.cos(e(a.B))
				)
			) : o.b ? (
				// 当参数o无a属性,且有b属性时
				a.b = o.b, 
				o.c ? (
					a.c = o.c,
					a.a = Math.sqrt(Math.pow(a.c, 2) - Math.pow(a.b, 2)),
					a.B = t(Math.acos(a.a / a.c)),
					a.A = 90 - a.B
				) : (o.A || o.B) && (
					a = n(a, o.A, o.B),
					a.a = a.b * Math.tan(e(a.A)),
					a.c = a.b / Math.cos(e(a.A))
				)
			) : o.c && (
				a.c = o.c,
				(o.A || o.B) && (
					a = n(a, o.A, o.B),
					a.a = a.c * Math.sin(e(a.A)),
					a.b = a.c * Math.cos(e(a.A))
				)
			),
        a
    }

把代码层次划出来,相对好理解一些
繁华终归落尽 2017-11-06
  • 打赏
  • 举报
回复
看着头有点疼
当作看不见 2017-11-06
  • 打赏
  • 举报
回复
大致是判断三角形是不是符合要求的三角形,写着代码而不写注释的,应该拉出去烧死

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧