#1907·JavaScript

转换/ RgbHsl 转换: rgbToHsl 变异( 并返回) 其输入阵列而不是复制

作者: aimasteracc创建于 2026年6月18日更新于 2026年6月18日

** 说明**

'Conversions/RgbHsl Conversion.js::rgbToHsl' 改变其输入数组. 它用 “let colorHsl = colorRgb ” (无副本) 来代替参数, 然后覆盖“ colorHsl [0. 2] ” , 因此调用者的 RGB 阵列被销毁并被 HSL 结果所取代。

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? comst rgbtoHsl = (colorRgb) { (中文(简体) ). . . . . . . . . 让颜色Hsl = 颜色Rgb / / <- 化名, 不复制 . . . . . . . . 颜色Hsl [0] = 红色/ 限制 // 变异调用器阵列 . . . . . . . . colorHsl [0] = Math.round( hue) // 最终 HSL 写入输入数组 颜色Hsl [1] = 数学圆(饱和度 * 100) 颜色Hsl[2] = Math.round(发光 * 100) 返回颜色Hsl {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?


返回的值是作为输入的 * 数组对象 *,所以仍然需要其RGB值的调用器会丢失它们.

** 重复**(经节点核实):

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
Const 输入 = [24、98、118]
连结结果=rgbtoHsl(输入)
//结果 -- > [193, 66, 28] (正确的 HSL)
// 输入 - > [193, 66, 28] <- 呼叫者的RGB阵列被覆盖
// 输入QQ结果 - > 真实的 < -- 相同对象,而非副本

** 预期行为**

`rgbToHsl'返回一个新的HSL阵列,使输入的RGB阵列保持不变(转换函数不应对其参数产生副作用)。

** 实际行为**

输入数组处于变异状态,并因此被还原("输入QQ结果"),因此原始的RGB数据被销毁.

** 建议的固定件**

工作复制, 而不是化名输入 :

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? 让颜色Hsl = [. 颜色Rgb]


HSL 数学本身是正确的;只有参数在位突变需要固定.

内容来源: TheAlgorithms/JavaScript