JS的一些细节

width="760" scrolling="no" height="90" frameborder="0" marginheight="0" marginwidth="0" border="0" id="alimamaifrm" name="alimamaifrm" src="http://p.alimama.com/code.php?t=2&i=mm_10003521_106784_109301&w=760&h=90&sz=11&bgc=FFFACD&bdc=FFFFFF&tc=000080&lc=000000&dc=000000">
1、 为什么有些网页内的<script>标签内会有:<!-- 脚本内容 -->?html注释会不会影响脚本执行?

这些是为不支持script的浏览器准备的,如果不支持script,那么<!-- -->就生效了,用以避免不支持script的浏览器把script输出在页面上。而加入这些,对于支持script的浏览器的脚本执行不会造成任何不良影响。

 

2、特殊的String类型。

很多语言,比如在java中char,int是原始类型,String对象是引用类型,继承自Object对象,存储在堆中。
但是在javaScript中String虽然仍然是变长的,但确是原始类型,存储在栈中。

3、善用typeof

判断一个变量a是否已经定义,最好的办法不是if(a)而是if(typeof a!="undefined"),这种绝对不会报错。
typeof的返回值是比较固定的,number,function,object,string,undefined。
因为Array,Date,都是Object的子类,所以他们的对象的type也是Object。而且typeof null == "object" 原理同Java。

4、善用instansof

  既然Array对象的type是object,那么对于弱类型的语言JS来说如何判断一个变量是否是Array呢(迟早会遇到这样的需求)?
  使用var a = new Array(); alert(a instanceof Array);他返回的boolean值会非常明确的告诉你正确与否。
而且还可以使用alert(a instanceof Object)来印证Array是Object的子类。
  如果还使用prototype原型链(不是prototype.js,而是它之所以这么命名的核心)来构建自己的继承对象的话,instanceof会更有效。
  还可以在function内用alert(typeof arguments)验证arguments对象的存在用alert(arguments instanceof Array)来印证arguments并不是Array的实例,虽然很像。

5、使用for...in...对Object类型对象的遍历

var obj = new Object();
obj.num = 1;
obj.String="s";
obj.date = new Date();
。。。。。。
如何遍历到obj中的所有内容呢?
for(skey in obj){
 alert("属性:"+skey+"的内容为:"+obj[skey]);
}

6、运算有时并不是精确的
据说主要是因为javascript采用是64位的数字.最高精度只能精确到16位。而且算来算去1+1可能等于1.99999999。
得到想要结果需要借助Math.floor() Math.ceil() Math.round()只是舍入的方法。
JS也是支持位运算的,这个一般人儿用不到。
如果想得到指定位数小数、指数等形式数字表示串,可以使用
<script>
a=330 * 0.01;
alert(a.toFixed(2));//返回一个字符串,代表一个以定点表示法表示的数字。
alert(a.toExponential(2));//返回一个字符串,其中包含一个以指数记数法表示的数字。
alert(a.toPrecision(3));//返回一个字符串,其中包含一个以指数记数法或定点记数法表示的,具有指定数字位数的数字。
</script>
如果您非要在前端实现高精度计算,n多真正的高手等着呢。
http://www.coolcode.cn/?p=120
看看这位朋友的文章

7、javaScript的三个组成部分
javaScript核心:ECMAScript的一个实现,描述语法和基本对象。
DOM:处理网页内容的方法和接口
BOM:与浏览器间的进行交互的方法和接口

开始我区分不开哪个是js核心、哪些是DOM、哪些是BOM、甚至BOM都很少听说
后来我一直只把第一部分当作javaScript,分得开的原因是我分别拥有2本参考手册,js手册和dhtml手册。
两个CHM文件对于我对javaScript各个部分的理解是潜移默化的,建议大家也搞两本手册或这看MSDN时注意下目录结构呵呵。

JS核心只有 String、Array、Boolean、Date、Error、Function、Number、Object、RegExp等等有限几种
像div,a等等都是DOM对象getElementById是DOM方法,我问过的人经常搞混掉
而BOM没有什么标准,window就是BOM对象,BOM主要负责和浏览器打交道,各浏览器差异也比较大
为什么要区分这些呢,这会对于ECMAScript标准和DOM标准有比较完整的理解,对于开发跨浏览器的JS有莫大的帮助

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值