深入理解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 相关文章推荐
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
Nov 24 Javascript
在js中单选框和复选框获取值的方式
Nov 06 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
Jun 20 Javascript
js实现简单折叠、展开菜单的方法
Aug 28 Javascript
谈谈Jquery中的children find 的区别有哪些
Oct 19 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
Apr 05 Javascript
Bootstrap Modal遮罩弹出层代码分享
Nov 21 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
Jan 11 Javascript
Javascript中的神器——Promise
Feb 08 Javascript
使用vuex解决刷新页面state数据消失的问题记录
May 08 Javascript
js键盘事件实现人物的行走
Jan 17 Javascript
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
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 number_format() 函数通过千位分组来格式化数字的实现代码
2013/08/06 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
javascript 兼容各个浏览器的事件
2015/02/04 Javascript
在JavaScript中操作时间之getYear()方法的使用教程
2015/06/11 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
python实现apahce网站日志分析示例
2014/04/02 Python
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
Python实现最常见加密方式详解
2019/07/13 Python
Python-opencv 双线性插值实例
2020/01/17 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
python如何运行js语句
2020/09/09 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
年会搞笑主持词串词
2014/03/24 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
大客户经理岗位职责
2015/04/09 职场文书
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python