深入理解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 相关文章推荐
javascript 字符串连接的性能问题(多浏览器)
Nov 18 Javascript
js中文逗号转英文实现
Feb 11 Javascript
巧用局部变量提升javascript性能
Feb 24 Javascript
js 加密压缩出现bug解决方案
Nov 25 Javascript
jquery ztree实现模糊搜索功能
Feb 25 Javascript
AngularJs自定义服务之实现签名和加密
Aug 02 Javascript
js实现文字向上轮播功能
Jan 13 Javascript
canvas知识总结
Jan 25 Javascript
angular2实现统一的http请求头方法
Aug 13 Javascript
详解js中Array的方法及技巧
Sep 12 Javascript
jQuery中DOM常见操作实例小结
Aug 01 jQuery
layer父页获取弹出层输入框里面的值方法
Sep 02 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
php笔记之:php数组相关函数的使用
2013/04/26 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
JavaScript基于数组实现的栈与队列操作示例
2018/12/22 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
python模块之time模块(实例讲解)
2017/09/13 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
python 常用的基础函数
2018/07/10 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
浅谈python锁与死锁问题
2020/08/14 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
物流专业大学应届生求职信
2013/11/03 职场文书
销售主管的自我评价分享
2014/01/03 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
中学教师个人总结
2015/02/10 职场文书
旷工检讨书大全
2015/08/15 职场文书