JavaScript高级程序设计,对书中一些不熟悉的地方做得笔记
2015-05-04 21:12
501 查看
<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"
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"
相关文章推荐
- JavaScript高级程序设计笔记 事件冒泡和事件捕获
- JavaScript高级程序设计第三版笔记(四)
- js-JavaScript高级程序设计学习笔记7
- JavaScript高级程序设计 客户端存储学习笔记
- javascript高级程序设计中很多值得仔细推敲的地方
- [JavaScript高级程序设计]语法、数据类型和一些区别注意
- JavaScript高级程序设计笔记 BOM (六)
- JavaScript高级程序设计阅读笔记-1
- 【阅读笔记】JavaScript 高级程序设计(一)
- DOM---JavaScript高级程序设计的笔记
- 《JavaScript高级程序设计 第三版》学习笔记 (六) 函数与闭包详解
- JavaScript高级程序设计第20章JSON 笔记 (学习笔记)
- Javascript高级程序设计第二版第六章--面向对象程序设计(Object-Oriented Programming)简称OOP编程--笔记
- JavaScript高级程序设计笔记(5)
- js-JavaScript高级程序设计学习笔记11
- JavaScript高级程序设计学习笔记--BOM
- JavaScript高级程序设计 学习笔记 js高级技巧
- Javascript高级程序设计第二版前三章--基本数据等--笔记
- javascript高级程序设计笔记-第四章(变量、作用域)
- JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML