本文介绍JavaScript开发中的实用技巧,包括直接使用JSON-P获取数据、利用Math.max和Array.sort简化逻辑、以及通过split和join高效管理DOM元素的CSS类名,帮助开发者写出更简洁高效的代码。
引言
在之前的文章中,我们探讨了JavaScript的七大技巧。尽管从事JavaScript开发已有时日,但回顾其发展历程,仍令人兴奋。作为这一语言发展的见证者与受益者,我撰写了多篇教程、章节及专著,但依然不断发现新的知识。以下分享的是一些曾让我惊叹的编程技巧,建议立即尝试,而非等待未来偶然发现。
JSON-P数据获取
var band = {
"name":"The Red Hot Chili Peppers",
"members":[
{
"name":"Anthony Kiedis",
"role":"lead vocals"
},
{
"name":"Michael 'Flea' Balzary",
"role":"bass guitar, trumpet, backing vocals"
},
{
"name":"Chad Smith",
"role":"drums,percussion"
},
{
"name":"John Frusciante",
"role":"Lead Guitar"
}
],
"year":""
}
JavaScript支持直接使用JSON,可将其封装在函数中,或作为API的返回值。这种形式被称为JSON-P,被许多API广泛采用。你可以调用数据源,在script代码中直接返回JSON-P数据:
01 12
上述示例调用了Delicious网站提供的Web服务,获取最近无序书签列表的JSON格式数据。
本质上,JSON是描述复杂数据结构最轻便的方式,且能在浏览器中直接运行。
你甚至可以在PHP中使用json_decode()函数来处理它。
JavaScript的内置函数(Math、Array和String)
令我惊讶的是,深入研究JavaScript中的math和String函数后,我发现它们能极大简化编程工作。
使用这些函数,可以省去复杂的循环处理和条件判断。
例如,当需要找出数字数组中的最大值时,过去的写法如下:
利用内置函数简化逻辑
var numbers =
[,,,,];
var max = ;
for(var i=;i
if(numbers[i]
> max){
max = numbers[i];
}
}
alert(max);
现在无需循环即可实现:
var numbers =
[,,,,];
numbers.sort(function(a,b){return b -
a});
alert(numbers[]);
需要注意的是,不能对数字字符数组直接使用sort(),因为这会按字母顺序排序。如需了解更多用法,推荐阅读关于sort()的详细介绍文章。
另一个有趣的函数是Math.max()。
该函数返回参数中最大的数字:
Math.max(12,123,3,2,433,4); // returns 433
由于该函数能校验数字并返回最大值,可用于测试浏览器对某特性的支持情况:
var scrollTop=
Math.max(
doc.documentElement.scrollTop,
doc.body.scrollTop
);
这是解决IE兼容性问题的一种方法。获取当前页面的scrollTop值时,根据页面DOCTYPE的不同,上述两个属性中仅有一个存放该值,另一个为undefined。通过Math.max()即可获取正确数值。
阅读相关文章可获取更多使用数学函数简化JavaScript的知识。
另外,split()和join()是一对非常有用的字符串操作函数。最具代表性的应用场景是为页面元素附加CSS样式。
具体而言,当给页面元素添加CSS class时,若它是该元素的第一个class,则直接赋值;若已有其他class,则需在原有class后加空格再追加新class。移除class时,也需同时去除其后的空格(这在旧版浏览器中至关重要,因为它们无法识别后跟空格的class)。
因此,原始写法如下:
高效管理CSS类名
function addclass(elm,newclass){
var c =
elm.className;
elm.className = (c === '') ? newclass : c+' '+newclass;
} 你可以使用 split() 和 join() 函数自动完成这个任务: function addclass(elm,newclass){
var classes =
elm.className.split(' ');
classes.push(newclass);
elm.className = classes.join(' ');
}
这能确保所有class均被空格分隔,且追加的class位于末尾。
这种做法略显短视。虽然工具包能加速开发,但若不理解JavaScript底层机制,仍易出错。
JSON数据存储优势
使用JSON形式存储数据
在发现JSON之前,我使用各种复杂方法将数据存储于JavaScript固有数据类型中,例如数组、字符串,中间夹杂易拆分的标志符号及其他繁琐内容。
Douglas Crockford发明JSON后,情况彻底改变。
借助JSON,可利用JavaScript自有功能将数据存储为复杂格式,无需额外转换,直接访问使用。
JSON是“JavaScript Object Notation”的缩写,它结合了上述两种简写方法。
以上内容为小编分享的JavaScript七大技巧,希望对大家有所帮助。