<script>使用注意
1、在包含外部的JavaScript文件时,必须将src属性设置为相应文件的的URL。这个文件可以是与包含它的页面位于同一个服务器上的文件,也可以是其他任何域中的文件。
2、所有的<script>元素都会按照它们在页面中出现的先后顺序以此被解析。在不使用defer和async属性的情况下,只有解析完前面的<script>元素中的代码之后,才开始解析后面的<script>元素中的代码。(defer属性只适用于外部脚本文件,HTML5会忽略给嵌入脚本设置的defer属性,IE4~IE7还支持defer属性,使用defer属性可以让脚本在文档完全呈现之后再执行。)(HTML5定义了async属性,它只适用于外部脚本文件,指定async属性的目的是不让页面等待两个脚本下载和执行,从而异步加载页面其他内容。所以不能保证脚本执行顺序。)
提示:把延迟脚本放在页面的底部仍然是最佳的选择。
3、由于浏览器会先解析完不使用defer属性的<script>元素中的代码,然后再解析后面的内容,所以一般会把<script>元素放在页面最后。
4、使用<noscript>元素可以指定在不支持脚本的浏览器中显示替代的内容,启用则不会显示。
变量
1、对未初始化的变量或者未声明的变量执行typeof操作符会返回undefined值。
2、Number类型
①八进制字面量在严格模式下是无效的,会导致支持的JavaScript引擎抛出错误;
②永远不要测试某个特定的浮点数字(浮点数的精度问题);
3、NaN
NaN,即非数值,是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回的情况,isNaN()函数可用来判断
alert(NaN == NaN); //false
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false ?10 is a number
alert(isNaN("10")); //false ?can be converted to number 10
alert(isNaN("blue")); //true ?cannot be converted to a number
alert(isNaN(true)); //false ?can be converted to number 1
数值转换问题
Number()转换
var num1 = Number("Hello world!"); //NaN
var num2 = Number(""); //0
var num3 = Number("000011"); //11
var num4 = Number(true); //1
parseInt()函数
var num1 = parseInt("1234blue"); //1234
var num2 = parseInt(""); //NaN
var num3 = parseInt("0xA"); //10 - hexadecimal
var num4 = parseInt(22.5); //22
var num5 = parseInt("70"); //70 - decimal
var num6 = parseInt("0xf"); //15 ?hexadecimal
var num7 = parseInt("070"); //56 -八进制数
//指定基数
var num1 = parseInt("10", 2); //2 ?parsed as binary
var num2 = parseInt("10", 8); //8 ?parsed as octal
var num3 = parseInt("10", 10); //10 ?parsed as decimal
var num4 = parseInt("10", 16); //16 ?parsed as hexadecimal
parseFloat()函数
//与parseInt的区别在于parseFloat会忽略前导的零
var num1 = parseFloat("1234blue"); //1234 - integer
var num2 = parseFloat("0xA"); //0
var num3 = parseFloat("22.5"); //22.5
var num4 = parseFloat("22.34.5"); //22.34
var num5 = parseFloat("0908.5"); //908.5
var num6 = parseFloat("3.125e7"); //31250000
toString()
//几乎每个值都有toString()方法,除了null和undefined
var age = 11;
var ageAsString = age.toString(); //the string "11"
var found = true;
var foundAsString = found.toString(); //the string "true"
var num = 10;
alert(num.toString()); //"10"
alert(num.toString(2)); //"1010"
alert(num.toString(8)); //"12"
alert(num.toString(10)); //"10"
alert(num.toString(16)); //"a"
//在不知道要转换的值是不是null或defined的情况下可以用转型函数String()
var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1)); //"10"
alert(String(value2)); //"true"
alert(String(value3)); //"null"
alert(String(value4)); //"undefined"