JavaScript一些基础技巧和注意事项,你了解这些吗?
总结了一些JavaScript在开发编码中的使用技巧,如有不对,欢迎指正。
一、JavaScript在HTML和XHTML的使用
使用<script>元素有两种方式:直接在页面中嵌入JavaScript代码和引入外部JavaScript文件。
1. 先说一下在HTML页面使用内嵌的JavaScript方式
<script type="text/javascript">
function compare(a,b){
if(a < b){
console.log("a 小于 b");
}else if(a > b){
console.log("a 大于 b");
}else{
console.log("a 等于 b");
}
}
</script>
上面的这段代码在HTML中是有效的,但是在XHML则是无效的。因为XHTML是将HTML作为XML的应用而重新定义的一个标准。编写XHTML代码的规则规范要比编写HTML严格多,从而也会直接影响到嵌入式的JavaScript的使用。所以上面的代码中的比较语句 a < b 中的 < 号在XHTML中会被当做一个新的标签来解析。
解决方法如下:
<script type="text/javascript">
//<![CDATA[
function compare(a,b){
if(a < b){
console.log("a 小于 b");
}else if(a > b){
console.log("a 大于 b");
}else{
console.log("a 等于 b");
}
}
//]]
</script>
在XHTML(XML)中,CDATA块是文档中的一个特殊区域,它包含了不需要解析的任意格式的文本内容,将javascript包裹在CDATA中可以解决在XHTML中无法使用问题,但是若是碰到了不兼容的XHTML的浏览器,不支持CDATA片段怎么办?再使用JavaScript注释将CDATA标记注释即可。这种格式在现代的浏览器中都可以正常使用了。
2. 关于引用外部JavaScript文件的使用
<script type="text/javascript" src="myjs.js"></script>
<script type="text/javascript" src="myjs.js" />
上面两种方式,第一种方式在HTML和XHTML中都可以正确解析,但是第二种在HTML中就不能保证可以正确解析了,因为第二种语法不符合HTML的规范。(本人之前在做HTML5开发时,确实碰到过这个问题,找了好久又对比了一下别的页面,发现就是引用JavaScript的规范不符合导致页面不可用)所以,规范编写代码还是很重要了,虽然某些代码支持多种写法,比如逻辑判断 IF 语句的执行语句只有一行,可以不用花括号{}将执行逻辑包含起来也可以达到我们要的效果,但是为了我们能够更好的理解它的作用范围和更符合编码规范,最好还是不要省略花括号。
二、JavaScript基础注意事项和使用技巧
1.关于分号" ; "的使用说明
var sum=a + b
var diff = a-b;
上面的两条语句都是可以被正确解析执行的,但是不推荐第一种写法,我们推荐每条语句的结尾都不要省略分号。
好处有一下三点:
(1). 加上分号可以避免很多错误(比如不完整的输入)
(2). 方便压缩代码(代码行结尾处没有分号会导致压缩错误)
(3). 提升代码性能,因为这样解析器就不必要花时间推测应该在哪里插入分号了
2.最好不要测试某个特定的浮点数值
var a=0.1;
var b=0.2;
console.log(a+b); //0.30000000000000004
如上图,并不是我们期望的0.3。关于浮点值计算产生误差,是使用基于IEEE754数值的浮点计算的通病(本人没有看IEEE754是什么,感兴趣的朋友自己查阅一下)。我们只要记住,在判定浮点数值计算上,千万不要轻易相信它。
3. 关于逻辑运算符或者 ||
或逻辑运算符,两者有一个是真就会执行代码块。我们都知道程序执行时是有顺序的。下面的代码 if 语句中如果 a 是真就不会再次判断 b 了,如果 a 不是真则在接着判断 b。所以关于使用逻辑运算符或 || ,某些情况下,将我们有把握的条件放在第一个位置,能够提升代码的执行效率。
if(a || b){
.......
}
另外它还有一种我们常用的赋值模式
var myObj=currentObj || backupObj;
上面代码的意思是如果currentObj不为null或undefined,则将currentObj赋值给myObj,否则将backupObj赋值给myObj。
4.相等操作符
相等操作符可以分为两种,一种是相等(== 和 != ),一种是全等(=== 和 !== )。
两者的区别在于相等(==)操作符会先转换操作数(也就是类型转换),然后再比较它们的相等性。而全等(===)操作符则不会进行类型转换,直接比较。参照下面代码可以看出等于和全等的区别,在实际开发中,为了保证数据类型的完整性,推荐使用全等操作符。
var result1=("55"==55); //true,因为转换后相等
var resutl2=("55" === 55); //false,因为不同的数据类型
5.利用函数的 arguments 参数实现函数重载
由于ECMAScript并没有函数签名的特性,所以函数不能重载,不过我们可以利用arguments参数实现函数伪重载
function doAdd(){
if(arguments.length==1){
console.log(arguments[0]+10);
}
if(arguments.length==2){
console.log(arguments[0]+arguments[1]);
}
} doAdd(10); //
doAdd(10,20); //
上面的代码是我们利用arguments参数个数实现了对同一函数不同参数列表的重载。当然,我们也可以通过检查传入参数的类型来实现不同的操作(这个可以大家自己练习一下)。
好了,上面就是在开发过程中我们经常遇到的一些问题和技巧,相信大家也是一样,或者已经从其它的地方有所了解。只要我们保持书写规范,了解部分逻辑的运行机制就可以利用它来优化我们的代码。
如果你也积累了一些开发注意事项和技巧或是从别的地方了解过,欢迎你分享。
最后,感谢阅读。
JavaScript一些基础技巧和注意事项,你了解这些吗?的更多相关文章
- javascript语言使用技巧及注意事项总结
1.首次为变量赋值时务必使用var关键字 变量没有声明而直接赋值得话,默认会作为一个新的全局变量,要尽量避免使用全局变量. var a=b=10;//其中a是局部变量,b是全局变量 2.使用===比= ...
- JavaScript学习基础部分
JavaScript学习基础 一.简介 1.JavaScript 是因特网上最流行的脚本语言,并且可在所有主要的浏览器中运行,比方说 Internet Explorer. Mozilla.Firefo ...
- Javascript语法基础
Javascript语法基础 一.基本数据类型 JavaScript中支持数字.字符串和布尔值三种基本数据类型: 1.数字 数字型是JavaScript中的基本数据类型.在JavaScript ...
- javascript 闭包基础分享
javascript 闭包基础分享 闭包向来给包括JavaScript程序员在内的程序员以神秘,高深的感觉,事实上,闭包的概念在函数式编程语言中算不上是难以理解的知识.如果对作用域,函数为独立的对象这 ...
- 使用css时的一些技巧及注意事项
<!-- TITLE: 使用css时的一些技巧及注意事项 --> # CSS推荐书写顺序: 1. 位置属性(position, top, right, z-index, display, ...
- HTML5+JavaScript动画基础 完整版 中文pdf扫描版
<HTML5+JavaScript动画基础>包括了基础知识.基础动画.高级动画.3D动画和其他技术5大部分,分别介绍了动画的基本概念.动画的JavaScript基础.动画中的三角学.渲染技 ...
- 19 个 JavaScript 编码小技巧
这篇文章适合任何一位基于JavaScript开发的开发者.我写这篇文章主要涉及JavaScript中一些简写的代码,帮助大家更好理解一些JavaScript的基础.希望这些代码能从不同的角度帮助你更好 ...
- JavaScript设计模式基础(一)
模式的起源 模式 起源于建筑学.20世纪70年代,哈佛大学建筑学博士Christopher Alexander和他的团队花大约20年,来研究为解决同一个问题而设计出的不同建筑结构,从中发现那些高质量设 ...
- JavaScript 引擎基础:Shapes 和 Inline Caches
JavaScript 引擎基础:Shapes 和 Inline Caches hijiangtao 中国科学院大学 计算机应用技术硕士 260 人赞同了该文章 前言:本文也可以被称做 “JavaS ...
随机推荐
- 邻接表无向图(二)之 C++详解
本章是通过C++实现邻接表无向图. 目录 1. 邻接表无向图的介绍 2. 邻接表无向图的代码说明 3. 邻接表无向图的完整源码 转载请注明出处:http://www.cnblogs.com/skywa ...
- 增强学习(五)----- 时间差分学习(Q learning, Sarsa learning)
接下来我们回顾一下动态规划算法(DP)和蒙特卡罗方法(MC)的特点,对于动态规划算法有如下特性: 需要环境模型,即状态转移概率\(P_{sa}\) 状态值函数的估计是自举的(bootstrapping ...
- Android系统如何录制屏幕(录制成mp4格式)
不管是教学,还是为了演示,如果能将Android手机(或平板)的屏幕录制成视频文件,那是一件非常酷的事(iOS8已经提供了这一功能,能通过OS X直接在Mac上录制iPad.iPhone的屏幕,win ...
- 【Android学习笔记】XmlResourceParser解析xml文件
最近学习Android时,需要用到解析XML文件里的数据,可以用XmlResourceParser来解析xml文件,正好将此记录下来. XmlResourceParser里常用的字段和方法 首先先给出 ...
- TRichTextBox – A universal RichTextBox which can display animated images and more
TRichTextBox – A universal RichTextBox which can display animated images and more trestan, 7 Dec 201 ...
- IIS 架构解析
我们在使用ASP.NET平台做web开发的时候,经常会接触到IIS(Internet Information Services 互联网信息服务).这篇文章主要来介绍IIS7.0+的架构.IIS的安全脆 ...
- GhostDoc Pro v4.9.14093.Cracked.By.SubMain 一款好用的代码注释生成工具——VS插件
一款比较好用的 VS 插件,能够快速生成注释. 这是 Pro 版本,与标准版本相比,支持对类.文件批量生成注释并且可以生成 CHM 帮助文件. 具体差异请转到: http://submain.com/ ...
- javascript设计模式实践之策略模式--输入验证
策略模式中的策略就是一种算法或者业务规则,将这些策略作为函数进行封装,并向外提供统一的调用执行. 先定义一个简单的输入表单: <!DOCTYPE html> <html> &l ...
- 从客户端中检测到有潜在危险的 Request.Form 值 --MVC
可以在处理Post方法的Action添加一个特性: [ValidateInput(false)],这样处理就更加有针对性,提高页面的安全性. 如: [HttpPost][ValidateInput(f ...
- [水煮 ASP.NET Web API2 方法论](3-8)怎样给指定路由配置处理器
阅读导航 问题 解决方案 工作原理 代码演示 问题 如果仅仅针对指定的路由进行某些特定的消息处理,而不是应用于所有路由,我们应该怎么做呢? 解决方案 ASP.NET WEB API 的很多功能都内建了 ...