深入理解javascript学习笔记(一) 编写高质量代码


Posted in Javascript onAugust 09, 2012

一、变量

•全局变量
JavaScript的两个特征,不自觉地创建出全局变量是出乎意料的容易。首先,你可以甚至不需要声明就可以使用变量;第二,JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性(不是真正意义上的全局变量,可以用delete删除)

function sum(x,y) { 
// result 未声明,为隐式全局变量 
result = x + y; 
return result; 
} function foo() { 
// 使用任务链进行部分var声明,b为隐式全局变量 
var a = b = 1; 
}

建议:
function (x,y) { 
var a ,b ; 
a = b = 1;//a,b 为局部变量 
}

•var作用
通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。
// 定义三个全局变量 
var global_var = 1; 
global_novar = 2; // 反面教材 
(function () { 
global_fromfunc = 3; // 反面教材 
}()); // 试图删除 
delete global_var; // false 
delete global_novar; // true 
delete global_fromfunc; // true 
// 测试该删除 
typeof global_var; // "number" 
typeof global_novar; // "undefined" 
typeof global_fromfunc; // "undefined"

•单var形式声明变量
在函数顶部使用单var语句是比较有用的一种形式。所有未初始化但声明的变量的初始值是undefined
function func() { 
var a = 1, 
b = 2, 
sum = a + b, 
myobject = {}, 
i, 
j; 
// function body... 
}

•var散布问题
// 反例 
myname = "global"; // 全局变量 
function func() { 
alert(myname); //"undefined" var myname = "local"; alert(myname); // "local" } func();等同于: 
myname = "global"; // global variable 
function func() { 
var myname; // 等同于 -> var myname = undefined; 
alert(myname); // "undefined" 
myname = "local"; 
alert(myname); // "local"} 
func();

二 for循环

•建议使用

function looper() { 
var i = 0, 
max, 
myarray = []; 
// ... 
for (i = 0, max = myarray.length; i < max; i++) { 
// 使用myarray[i]做点什么 
} 
}

使用以下表达式代替i++
i = i + 1 
i += 1以下两种循环方式更快 
//第一种变化的形式: 
var i, myarray = []; 
for (i = myarray.length; i?-;) { 
// 使用myarray[i]做点什么 
} 
//第二种使用while循环: 
var myarray = [], 
i = myarray.length; 
while (i?-) { 
// 使用myarray[i]做点什么 
}

•for-in循环
应用在非数组对象的遍历上,数组使用正常的for循环,对象使用for-in循环。使用hasOwnProperty()方法,当遍历对象属性的时候可以过滤掉从原型链上下来的属性。

三 避免隐式类型转换

•坚持使用===和!==

四 避免使用eval,以及避免给setInterval(), setTimeout()和Function()构造函数传递字符串,用函数代替。

五 parseInt()数值转换

建议给基数参数赋值,

var month = "06", 
year = "09"; 
month = parseInt(month, 10);//开头为0的字符串会被当做8进制处理 
year = parseInt(year, 10);

六 编程规范

构造函数命名:MyConstructor();

一般函数命名:myFunction();

变量命名:firstName;

私有属性或方法:_secondeName,

常量:PI,MAX;

Javascript 相关文章推荐
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 Javascript
jquery异步循环获取功能实现代码
Sep 19 Javascript
JS短路原理的应用示例 精简代码的途径
Dec 13 Javascript
举例详解JavaScript中Promise的使用
Jun 24 Javascript
分享纯手写漂亮的表单验证
Nov 19 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
Feb 13 Javascript
JavaScript中双向数据绑定详解
May 03 Javascript
js 实现复选框只能选择一项的示例代码
Jan 23 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
Jul 23 Javascript
微信小程序实现分享朋友圈的图片功能示例
Jan 18 Javascript
vue+moment实现倒计时效果
Aug 26 Javascript
js实现打字小游戏
Dec 17 Javascript
JS数学函数Exp使用说明
Aug 09 #Javascript
基于jQuery实现左右div自适应高度完全相同的代码
Aug 09 #Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
Aug 09 #Javascript
用JQuery在网页中实现分隔条功能的代码
Aug 09 #Javascript
基于jQuery的简单九宫格实现代码
Aug 09 #Javascript
JavaScript基础知识之数据类型
Aug 06 #Javascript
jquery 插件学习(六)
Aug 06 #Javascript
You might like
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
PHP操作MySQL事务实例
2014/11/05 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
2014/11/12 Javascript
js数组的操作指南
2014/12/28 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
js尾调用优化的实现
2019/05/23 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
让python 3支持mysqldb的解决方法
2017/02/14 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
Python实现类的创建与使用方法示例
2017/07/25 Python
Python实现FTP文件传输的实例
2019/07/07 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
法国时尚童装网站:Melijoe
2016/08/10 全球购物
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
美国著名手表网站:Timepiece
2017/11/15 全球购物
新加坡交友网站:be2新加坡
2019/04/10 全球购物
教学实习自我评价
2014/01/28 职场文书
运动会开幕式主持词
2014/03/28 职场文书
三方股份合作协议书
2014/10/13 职场文书
党风廉正建设责任书
2015/01/29 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书