深入理解javascript学习笔记(一)编写高质量代码
2023-06-13 09:14:35 时间
一、变量
•全局变量
JavaScript的两个特征,不自觉地创建出全局变量是出乎意料的容易。首先,你可以甚至不需要声明就可以使用变量;第二,JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性(不是真正意义上的全局变量,可以用delete删除)
复制代码代码如下:
•全局变量
JavaScript的两个特征,不自觉地创建出全局变量是出乎意料的容易。首先,你可以甚至不需要声明就可以使用变量;第二,JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性(不是真正意义上的全局变量,可以用delete删除)
functionsum(x,y){
//result未声明,为隐式全局变量
result=x+y;
returnresult;
}
functionfoo(){
//使用任务链进行部分var声明,b为隐式全局变量
vara=b=1;
}
建议:
function(x,y){
vara,b;
a=b=1;//a,b为局部变量
}
•var作用
通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。
//定义三个全局变量
varglobal_var=1;
global_novar=2;//反面教材
(function(){
global_fromfunc=3;//反面教材
}());
//试图删除
deleteglobal_var;//false
deleteglobal_novar;//true
deleteglobal_fromfunc;//true
//测试该删除
typeofglobal_var;//"number"
typeofglobal_novar;//"undefined"
typeofglobal_fromfunc;//"undefined"
•单var形式声明变量
在函数顶部使用单var语句是比较有用的一种形式。所有未初始化但声明的变量的初始值是undefined
functionfunc(){
vara=1,
b=2,
sum=a+b,
myobject={},
i,
j;
//functionbody...
}
•var散布问题
//反例
myname="global";//全局变量
functionfunc(){
alert(myname);//"undefined"varmyname="local";alert(myname);//"local"}func();等同于:
myname="global";//globalvariable
functionfunc(){
varmyname;//等同于->varmyname=undefined;
alert(myname);//"undefined"
myname="local";
alert(myname);//"local"}
func();
二for循环
•建议使用
functionlooper(){
vari=0,
max,
myarray=[];
//...
for(i=0,max=myarray.length;i<max;i++){
//使用myarray[i]做点什么
}
}
使用以下表达式代替i++
i=i+1
i+=1以下两种循环方式更快
//第一种变化的形式:
vari,myarray=[];
for(i=myarray.length;i?-;){
//使用myarray[i]做点什么
}
//第二种使用while循环:
varmyarray=[],
i=myarray.length;
while(i?-){
//使用myarray[i]做点什么
}
•for-in循环
应用在非数组对象的遍历上,数组使用正常的for循环,对象使用for-in循环。使用hasOwnProperty()方法,当遍历对象属性的时候可以过滤掉从原型链上下来的属性。
三避免隐式类型转换
•坚持使用===和!==
四避免使用eval,以及避免给setInterval(),setTimeout()和Function()构造函数传递字符串,用函数代替。
五parseInt()数值转换
建议给基数参数赋值,
varmonth="06",
year="09";
month=parseInt(month,10);//开头为0的字符串会被当做8进制处理
year=parseInt(year,10);
六编程规范
构造函数命名:MyConstructor();
一般函数命名:myFunction();
变量命名:firstName;
私有属性或方法:_secondeName,
常量:PI,MAX;
相关文章
- JavaScript笔记(14)
- JavaScript笔记(20)
- javascript实现表单提交加密「建议收藏」
- JavaScript 笔记
- 《JavaScript DOM编程艺术》学习笔记(二)详解编程语言
- JavaScript笔记整理详解编程语言
- JavaScript语言精粹学习笔记
- JavaScript中级笔记第四章闭包
- JavaScript学习笔记(九)call和apply方法
- JavaScript学习笔记(十)
- JavaScript学习笔记(十七)js优化
- Javascript学习笔记一之数据类型
- JavaScript高级程序设计DOM学习笔记
- JavaScript学习笔记(一)js基本语法
- javascript学习基础笔记之DOM对象操作
- javascript学习笔记(四)Number数字类型
- javascript学习笔记(六)Date日期类型
- javascript学习笔记(十六)系统对话框(alert、confirm、prompt)
- javascript学习笔记(十七)检测浏览器插件代码
- JavaScript高级程序设计(第3版)学习笔记7js函数(上)
- Javascript学习笔记之函数篇(一):函数声明和函数表达式
- Javascript学习笔记之函数篇(二):this的工作机制