您的变量是一个全局变量,因此可以从您的代码中的任何位置访问或设置它。在Web浏览器中,有许多全局变量是具有功能的对象。这些主要用于存储数据。
另一方面,函数可用于执行代码块或返回对象。
例如,您可以定义一个函数从字符串中提取文本。此功能将从代表十六进制,RGB或RGBA格式颜色的字符串中解析R(红色)G(绿色)B(蓝色)部分。
function getRGB(color) {
var Rhex, Ghex, Bhex;
var R8bit = null;
var G8bit = null;
var B8bit = null;
var IsHex = false;
if (color.match(/rgba?\((\d{1,3}),\s(\d{1,3}),\s(\d{1,3})/)) {
Rhex = RegExp.$1;
Ghex = RegExp.$2;
Bhex = RegExp.$3;
}
else if (color.match(/^\s*#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\s*$/i)) {
Rhex = RegExp.$1;
Ghex = RegExp.$2;
Bhex = RegExp.$3;
IsHex = true;
}
else if (color.match(/^\s*#?([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i)) {
Rhex = RegExp.$1 + RegExp.$1;
Ghex = RegExp.$2 + RegExp.$2;
Bhex = RegExp.$3 + RegExp.$3;
IsHex = true;
}
else {
return (NaN);
}
if (IsHex) {
R8bit = parseInt(Rhex, 16);
G8bit = parseInt(Ghex, 16);
B8bit = parseInt(Bhex, 16);
} else {
R8bit = parseInt(Rhex);
G8bit = parseInt(Ghex);
B8bit = parseInt(Bhex);
}
return [R8bit, G8bit, B8bit];
}
现在我可以使用该功能从其他功能,例如调低或通过增加或减少颜色的RGB分量颜色变浅:
function darken(color) {
var rgb = getRGB(Color);
return [Math.Max(rgb[0]-1,0), Math.Max(rgb[1]-1,0), Math.Max(rgb[2]-1,0)];
}
或者减轻颜色:
function lighten(color) {
var rgb = getRGB(Color);
return [Math.Min(rgb[0]+1,255), Math.Min(rgb[1]+1,255), Math.Min(rgb[2]+255,0)];
}
我也可以声明函数的内部变量和函数:
function myColorHelper(e)
{
var el = $(e);
var myColor= function() { return el.css("color"); };
var myrgb = function() { return getRGB(mycolor);};
var makeDarker = function() {
var darker = darken(myrgb());
el.css("color", "rgb(" + darker[0] + ", " + darker[1] + ", " + darker[2]);
};
var makeLighter = function() {
var lighter = lighten(myrgb());
el.css("color", "rgb(" + lighten[0] + ", " + lighten[1] + ", " + lighten[2]);
};
}
插件和框架充满了允许我们在代码中使用功能的功能。例如,我可以使用这些函数使用jQuery来加深或减轻网页上元素的颜色。
var helper = myColorHelper($('#myElement'));
helper.makeLighter();
helper.makeDarker();
你的第二个函数不返回任何东西。 它只是将值赋给全局变量。 –
我看到的大部分代码都是使用您的第一个解决方案(使用return) – EntryLeveDeveloper