对于js标签与变量类型的细节枚举
一、标签细节
对于常用的 <script>
标签,除去src
,type
,charset
属性外还可以设置async
,defer
属性
以下是对两属性的作用解析
async
:表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或 等待加载其他脚本,
但只对外部脚本文件(即外联js文件)有效。同时需要注意的是,该属性并不能保证js文件的执行先后顺序
其意义仅在于使页面不等待脚本的下载,异步加载界面,使用户有更好的体验
defer
:表示脚本可以延迟到文档完全被解析和显示之后再执行,但同样只对外部脚本文件有 效。
这意味着我们的<script>
标签可以不必为了防止js某些id指向为空,每次都放到body
的最后面。
二、变量类型细节
对于常用的变量(字符,布尔,浮点,null等)来说,他们的计算也有一些需要注意的细节
undefined与null
:乍看毫无关系的两者其实有着紧密联系,undefined
值实际上是派生自null
值的
而null
实际上是表示一个空对象的指针。对此我们可以有如下代码检验。
var age;
console.log(age);
if(age==null){
console.log(1);
}
else{
console.log(0);
}
在这里我们声明了age
变量,但未定义任何类型,并输出age
,而后用if来检测age
与null
的关系是否相等来验证。
其结果如下Number类型细节
:其八进制书写格式在严格模式下是无效的浮点类型细节
:浮点类型数据在进行算术计算时其精确度远远不如整数,如0.1 加0.2的结果不是0.3,而是0.30000000000000004NaN类型细节
:其含义为非数值,用于表示一个本来要返回数值的操作数未返回数值的情况,且NaN类型数据与任何数据都不相等字符串类型细节
:字符串类型的值一经创建就是不可变的,仅能由新的字符串覆盖
对象的数值转换细节
:对于对象,将调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换 的结果是NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值。