HTML5参训笔记---javascript编写注意事项
来源:互联网 发布:微信 视频编辑软件知乎 编辑:程序博客网 时间:2024/05/01 23:56
一、javascript中避免起首的大括号换行的风格
<var log = function ()</span><br />{cosole.log("do not code with this style");}应当使用起首大括号不换号的风格
<pre name="code" class="javascript">var log = function(){ console.log("code with this style");}
因为javascript解析器会将换行默认为是语句的结束,因此若采用起首大括号换行的编码风格的话,可能会导致javascript代码在执行的时候产生与预期行为不一致的现象。考虑一下代码
<pre name="code" class="javascript">var log = function(){ return { suggestion : "do not code with this style" }} console.log(log());
控制台会输出什么值?答案是undefined。为什么呢?因为javascript解析器将换号编译成了语句的结束,即相当于在return后面加了个;所以返回的值自然是undefined。如果修改成如下代码则能正确的返回一个还有suggestion成员属性的对象了。
var log = function(){ return{ suggestion:"do not code with this style" } } console.log(log());
二、在你js文件的开头加上;,因为不能确定浏览器再加载你js代码的时候是换行插入到其他js代码的后面还是不换行就插入,如果不换行就插入的话,很可能造成js执行的时候报错。
三、闭包容易导致内存泄露。所谓闭包指的是一个函数内部的引用期局部变量的一个内部函数,实现方式如下:
var closure = function() { var local = "this is closure show" ; return function() { console.log(local); };};closure ();很显然,控制台会输出"this is closure show"。但是由于函数运行完以后,依然引用了该局部变量,所以内存回收的时候不会回收该局部变量,若该类变量持续增加的话,容易导致内存溢出。
四、在函数开头申明所有的局部变量。否则,容易由于和全局变量的冲突导致对变量引用的失败,看如下代码:
var global = "another suggestion" ;var error = function() { console.log(global); var global = "actually,this is a local variable"; console.log(global);};error();事实上,运行这段代码,输出的值是“undefined”和“actually,this is a local variable”。为什么呢?其实在javascript解释器解释javascript代码时会将变量提前声明,因此在error函数中global变量会在第一次console.log(global)运行前被重新声明为局部变量,在原来声明为局部变量的位置再重新给global变量赋值,解析成类似代码如下:
var global = "another suggestion" ;var error = function() { var global ; console.log(global); global = "actually,this is a local variable"; console.log(global);};error();
所以第一次运行console.log(global)时,输出的结果是undefined。
五、javascript解析的for循环优化比while循环优化做的好,推荐多使用for循环;另,for in循环实现的不好,因为每次循环执行时需要遍历所有变量包括从原型链继承来的,因此在遍历由多继承来的对象的时候,效率极低 。
六、javascript的自动类型装换方向是向基本数据类型转,且当字符串类型向数值型类型转换失败时返回NaN,NaN与任何数值型数据比较都返回false;如以下代码:
console.log("haha" == 1) ;
六、由于JavaScript是通过二进制浮点数的形式来表示实数的,因此不能够精确的表示十进制分数,比如1/10、1/100等。因此在数值比较中会存在一些问题,如下代码所示:
var x = .3 - .2 ; //运算后的结果是0.09999999999999998var y = 0.2 - 0.1 ;//运算后的结果是0.1x == y ; //运行结果为false因此在JavaScirpt的数值比较运算中,尽量使用二进制的分数运算,不要使用10进制的分数进行运算。
0 0
- HTML5参训笔记---javascript编写注意事项
- 编写Javascript时的注意事项
- javascript 复习笔记----注意事项总结
- 【教程】HTML5+JavaScript编写flappy bird
- 试试HTML5+JavaScript编写贪吃蛇游戏
- html5注意事项
- 【教程】HTML5+JavaScript编写转动的水彩五环
- html5 css3 javascript 学习笔记 第一天 html5 变化优势
- JDBC、Servlet、JSP、HTML5、JavaScript学习笔记
- HTML5学习笔记 —— JavaScript基础知识
- HTML5学习笔记 —— JavaScript语句
- HTML5学习笔记 —— JavaScript基础知识
- 《编写可维护的JavaScript》笔记
- 《编写可维护的javascript》笔记
- 编写可维护的 JavaScript 笔记 (6
- 编写可维护的 JavaScript 笔记 (11
- javascript注意事项
- Javascript注意事项
- servlet学习笔记--如何追踪session
- Kernel configuration is invalid. include/linux/autoconf.h or include/config/auto.conf are m
- 简单的命令行总结、git命令行
- Hologram的实现
- JAVA-FINAL
- HTML5参训笔记---javascript编写注意事项
- 用递归求取字符串的长度
- VBA 实现word 中加水印并保护起来,不允许做复制粘贴
- Java垃圾回收机制
- 探讨OC中的内存管理
- 庆祝一下,Android视频采集+H264编码成功
- Sublime Text 3 安装Package Control
- J2EE容器与服务
- 【EASY ANDROID】第4节:常用的基本控件 发布