深入理解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 相关文章推荐
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
Nov 06 Javascript
模拟电子签章盖章效果的jQuery插件源码
Jun 24 Javascript
关于javaScript注册click事件传递参数的不成功问题
Jul 18 Javascript
jQuery实现手机上输入后隐藏键盘功能
Jan 04 Javascript
vue实现点击图片放大效果
Aug 15 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
Aug 28 jQuery
npm 下载指定版本的组件方法
May 17 Javascript
Vue 重置组件到初始状态的方法示例
Oct 10 Javascript
jquery实现聊天机器人
Feb 08 jQuery
Element MessageBox弹框的具体使用
Jul 27 Javascript
详解datagrid使用方法(重要)
Nov 06 Javascript
Vue3 Composition API的使用简介
Mar 29 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面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
PHP错误机制知识汇总
2016/03/24 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
微信小程序 开发之顶部导航栏实例代码
2017/02/23 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
python实现图书管理系统
2018/03/12 Python
Django开发的简易留言板案例详解
2018/12/04 Python
python 伯努利分布详解
2020/02/25 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
请说出以下代码输出什么
2013/08/30 面试题
小学学校评估方案
2014/06/08 职场文书
国贸专业求职信
2014/06/28 职场文书
三八节活动主持词
2015/07/04 职场文书
python b站视频下载的五种版本
2021/05/27 Python
Redis集群的关闭与重启操作
2021/07/07 Redis
Go Plugins插件的实现方式
2021/08/07 Golang
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers