目录
Great Web resources
首页 web前端 js教程 JavaScript初学者应注意的七个细节详细介绍_基础知识

JavaScript初学者应注意的七个细节详细介绍_基础知识

May 16, 2016 pm 05:45 PM
初学者 细节

种种语言都有它特别的地方,对于JavaScript来说,使用var就可以声明任意类型的变量,这门脚本语言看起来很简单,然而想要写出优雅的代码却是需要不断积累经验的。本文利列举了JavaScript初学者应该注意的七个细节,与大家分享。
(1)简化代码
--------------------------------------------------------------------------------
JavaScript定义对象和数组非常简单,我们想要创建一个对象,一般是这样写的:

复制代码 代码如下:

var car = new Object();
car.colour = 'red';
car.wheels = 4;
car.hubcaps = 'spinning';
car.age = 4;

下面的写法可以达到同样的效果:
复制代码 代码如下:

var car = {
colour:'red',
wheels:4,
hubcaps:'spinning',
age:4
}

后面的写法要短得多,而且你不需要重复写对象名称。
另外对于数组同样有简洁的写法,过去我们声明数组是这样写的:
复制代码 代码如下:

var moviesThatNeedBetterWriters = new Array(
'Transformers','Transformers2','Avatar','Indiana Jones 4'
);

更简洁的写法是:
复制代码 代码如下:

var moviesThatNeedBetterWriters = [
'Transformers','Transformers2','Avatar','Indiana Jones 4'
];

对于数组,还有关联数组这样一个特别的东西。 你会发现很多代码是这样定义对象的:
复制代码 代码如下:

var car = new Array();
car['colour'] = 'red';
car['wheels'] = 4;
car['hubcaps'] = 'spinning';
car['age'] = 4;

这太疯狂了,不要觉得困惑,“关联数组”只是对象的一个别名而已。
另外一个简化代码的方法是使用三元运算符,举个例子:
复制代码 代码如下:

var direction;
if(x direction = 1;
} else {
direction = -1;
}

我们可以使用如下的代码替换这种写法:
复制代码 代码如下:

var direction = x

(2)使用JSON作为数据格式
伟大的Douglas Crockford发明了JSON数据格式来存储数据,你可以使用原生的javascript方法来存储复杂的数据而不需要进行任何额外的转换,例如:
复制代码 代码如下:

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":"2009"
}

你可以使用在JavaScript中直接使用JSON,甚至作为API返回的一种格式,在许多的API中被应用,例如:
复制代码 代码如下:

<script> <BR>function delicious(o){ <BR>var out = '<ul>'; <BR>for(var i=0;i<o.length;i++){ <BR>out += '<li><a href="' + o[i].u + '">' + <BR>o[i].d + ''; <BR>} <BR>out += ''; <BR>document.getElementById('delicious').innerHTML = out; <BR>} <BR></script>


这里调用delicious 的Web服务获取最新书签,以JSON格式返回,然后将它们显示成无序列表的形式。
从本质上讲,JSON是用于描述复杂的数据最轻量级的方式,而且直接它运行在浏览器中。 你甚至可以在PHP中调用 json_decode()函数来使用它。
(3)尽量使用JavaScript原生函数
--------------------------------------------------------------------------------
要找一组数字中的最大数,我们可能会写一个循环,例如:
复制代码 代码如下:

var numbers = [3,342,23,22,124];
var max = 0;
for(var i=0;iif(numbers[i] > max){
max = numbers[i];
}
}
alert(max);

其实,不用循环可以实现同样的功能:
复制代码 代码如下:

var numbers = [3,342,23,22,124];
numbers.sort(function(a,b){return b - a});
alert(numbers[0]);

而最简洁的写法是:
复制代码 代码如下:

Math.max(12,123,3,2,433,4); // returns 433

你甚至可以使用Math.max来检测浏览器支持哪个属性:
复制代码 代码如下:

var scrollTop= Math.max(
doc.documentElement.scrollTop,
doc.body.scrollTop
);

如果你想给一个元素增加class样式,可能原始的写法是这样的:
复制代码 代码如下:

function addclass(elm,newclass){
var c = elm.className;
elm.className = (c === '') ? newclass : c+' '+newclass;

而更优雅的写法是:
复制代码 代码如下:

function addclass(elm,newclass){
var classes = elm.className.split(' ');
classes.push(newclass);
elm.className = classes.join(' ');
}

(4)事件委托
--------------------------------------------------------------------------------
事件是JavaScript非常重要的一部分。我们想给一个列表中的链接绑定点击事件,一般的做法是写一个循环,给每个链接对象绑定事件,HTML代码如下:
复制代码 代码如下:

脚本如下:
复制代码 代码如下:

// Classic event handling example
(function(){
var resources = document.getElementById('resources');
var links = resources.getElementsByTagName('a');
var all = links.length;
for(var i=0;i// Attach a listener to each link
links[i].addEventListener('click',handler,false);
};
function handler(e){
var x = e.target; // Get the link that was clicked
alert(x);
e.preventDefault();
};
})();

更合理的写法是只给列表的父对象绑定事件,代码如下
复制代码 代码如下:

(function(){
var resources = document.getElementById('resources');
resources.addEventListener('click',handler,false);
function handler(e){
var x = e.target; // get the link tha
if(x.nodeName.toLowerCase() === 'a'){
alert('Event delegation:' + x);
e.preventDefault();
}
};
})();

(5)匿名函数
--------------------------------------------------------------------------------
关于JavaScript的最头疼的事情之一是,它的变量没有特定的作用范围。 一般情况下,任何变量,函数,数组或对象都是全局性,这意味着在同一页上的其他脚本可以访问并覆盖它们。解决方法是把变量封装在一个匿名函数中。 例如,下面的定义将产生三个全局变量和和两个全局函数:
复制代码 代码如下:

var name = 'Chris';
var age = '34';
var status = 'single';
function createMember(){
// [...]
}
function getMemberDetails(){
// [...]
}

封装后如下:
复制代码 代码如下:

var myApplication = function(){
var name = 'Chris';
var age = '34';
var status = 'single';
return{
createMember:function(){
// [...]
},
getMemberDetails:function(){
// [...]
}
}
}();
// myApplication.createMember() and
// myApplication.getMemberDetails() now works.

这被称为单体模式,是JavaScript设计模式的一种,这种模式在YUI中用得非常多,改进的写法是:
复制代码 代码如下:

var myApplication = function(){
var name = 'Chris';
var age = '34';
var status = 'single';
function createMember(){
// [...]
}
function getMemberDetails(){
// [...]
}
return{
create:createMember,
get:getMemberDetails
}
}();
//myApplication.get() and myApplication.create() now work.

(6)代码可配置
--------------------------------------------------------------------------------
你写的代码如果想让别人更容易进行使用或者修改,则需要可配置,解决方案是在你写的脚本中增加一个配置对象。要点如下:
1、在你的脚本中新增一个叫configuration的对象。
2、在配置对象中存放所有其它人可能想要去改变的东西,例如CSS的ID、class名称、语言等等。
3、返回这个对象,作为公共属性以便其它人可以进行重写。
(7)代码兼容性
--------------------------------------------------------------------------------
兼容性是初学者容易忽略的部分,通常学习Javascript的时候都是在某个固定的浏览器中进行测试,而这个浏览器很有可能就是IE,这是非常致命的,因为目前几大主流浏览器中偏偏IE对标准的支持是最差的。最终用户看到的结果也许就是,你写的代码在某个浏览器无法正确运行。你应该把你的代码在主流的浏览器中都测试一下,这也许很费时间,但是应该这样做。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

成为C语言专家:推荐的五个必备编译器 成为C语言专家:推荐的五个必备编译器 Feb 19, 2024 pm 01:03 PM

从初学者到专家:五个必备的C语言编译器推荐随着计算机科学的发展,越来越多的人对编程语言充满了兴趣。而C语言作为一门广泛应用于系统级编程的高级语言,一直受到了程序员们的喜爱。为了写出高效、稳定的代码,选择一款适合自己的C语言编译器是很重要的。本文将介绍五个必备的C语言编译器,供初学者和专家们参考选择。GCCGCC,即GNU编译器集合,是最常用的C语言编译器之一

C++和Python,哪个更适合初学者? C++和Python,哪个更适合初学者? Mar 25, 2024 am 10:54 AM

C++和Python,哪个更适合初学者?在这个信息化浪潮席卷全球的时代,编程能力已经成为一项必备技能。而在学习编程的过程中,选择一门合适的编程语言显得尤为重要。在众多编程语言中,C++和Python都是备受初学者关注的两大热门选择。那么,C++和Python到底哪个更适合初学者呢?以下将从各方面对比两者的优劣,以及为什么选择某一种语言更有助于初学者的编程入门

WooCommerce税务指南:适合初学者的指南 WooCommerce税务指南:适合初学者的指南 Sep 04, 2023 am 08:25 AM

现在我们已经了解了WooCommerce产品及其相关设置,接下来让我们了解一下WooCommerce的税务配置选项。税收设置作为在线商店所有者,您永远不会想搞乱税务规则和问题。WooCommerce在这方面为您提供帮助,提供多种选项来解决所有税务设置,这些设置可能会因您所在的国家/地区和个别商店的要求而异。可以在以下位置找到这些选项:WooCommerce->设置->税。进入税务设置选项卡后,您将看到一个主要的税收设置部分以及三种不同的税级。这些是:税务选项标准费率降低利率零利率税收

Python初学者必学:掌握lambda函数的基础用法 Python初学者必学:掌握lambda函数的基础用法 Feb 02, 2024 pm 06:41 PM

初学者必备:掌握Python中lambda函数的基本使用方法,需要具体代码示例概述:Python是一种简单易学的编程语言,它以其简洁、灵活的语法吸引了众多程序员的喜爱。在Python中,lambda函数是一种特殊的匿名函数,它可以在需要函数的地方直接定义,并且无需给它一个名字。本文将介绍lambda函数的基本使用方法,并提供具体的代码示例,以帮助初学者更好地

Pandas初学者指南:HTML表格数据读取技巧 Pandas初学者指南:HTML表格数据读取技巧 Jan 09, 2024 am 08:10 AM

初学者指南:如何用Pandas读取HTML表格数据引言:在数据处理和分析中,Pandas是一个强大的Python库。它提供了灵活的数据结构和数据分析工具,使得数据处理变得更加简单高效。Pandas不仅可以处理CSV、Excel等格式的数据,还可以直接读取HTML表格数据。本文将介绍如何使用Pandas库读取HTML表格数据的方法,提供具体的代码示例,帮助初学

编程初学者应该优先学习C语言还是C++ 编程初学者应该优先学习C语言还是C++ Mar 18, 2024 pm 03:15 PM

标题:编程初学者应该优先学习C语言还是C++?在编程领域,C语言和C++是两种非常重要的编程语言,它们都有自己独特的特点和优势。对于初学者来说,选择学习哪种语言可能会有一些困惑。本文将就这个问题展开讨论,以及给出一些具体的代码示例来帮助初学者更好地了解两种语言的不同之处。首先,让我们来看一下C语言。C语言是一种功能强大且广泛应用的编程语言,它是从汇编语言发

初学者必读:如何根据需求选择合适的Django版本? 初学者必读:如何根据需求选择合适的Django版本? Jan 19, 2024 am 08:20 AM

对于初学者而言,选择合适的Django版本是一个重要而且必须要面对的问题。Django作为一个高效的Web框架拥有大量的用户和开发者,因此它也拥有多个版本以满足不同产品和应用的需求。但是,如何根据项目需求选择合适的Django版本呢?下面我们将通过一些实例来帮助大家选择适合自己的版本。确认所用数据库Django支持多个数据库,包括MySQL,Postgre

使用matplotlib制作散点图的初学者指南 使用matplotlib制作散点图的初学者指南 Jan 17, 2024 am 09:58 AM

matplotlib是Python中最常用的数据可视化库之一。它提供了各种绘图选项,包括线图、柱状图、散点图等等。本篇文章将教你如何使用matplotlib绘制散点图,同时提供具体的代码示例,以帮助初学者快速上手。一、导入matplotlib模块在开始使用matplotlib绘制散点图之前,首先,需要导入相关的Python模块。代码如下:importpa

See all articles