02.23
- 带有src的
<script>
元素不应该在其script标签之间包含额外的javascript代码。如果包含了嵌入的代码,则只会下载并执行外部脚本文件。 - 在script元素中设置defer属性,相当于告诉浏览器立即下载,但是延迟执行
- XHTML 指可扩展超文本标签语言(EXtensible HyperText Markup Language)。XHTML 的目标是取代 HTML。XHTML 与 HTML 4.01 几乎是相同的。XHTML 是更严格更纯净的 HTML 版本。XHTML 是作为一种 XML 应用被重新定义的 HTML。XHTML 是一个 W3C 标准。元素必须被正确地嵌套。非空标签必须使用结束标签。
- 混杂模式和标准模式主要影响css内容的呈现,但在某些情况下也会影响到JavaScript的解释执行
- ECMAScript5引入了严格模式的概念。严格模式是为JavaScript定义了一种不同的解析与执行模型。一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。
- ECMAScript中有5中简单数据类型(基本数据类型):Undefined、Null、Boolean、Number、String。1种复杂数据类型-Object
用typeof可能返回 “undefined”,“boolean”,“string”,“number”,“null”,“function”,“object”
Undefined类型
var message;
//var age
alert(message)//"undefined"
alert(age)//产生错误
var message;
//var age
alert(typeof message)//"undefined"
alert(typeof age)//"undefined"
- Null类型
var car=null;
alert(typeof car)//"object"
if(car!=null){
//对car对象执行某些操作
}
1+undefined//NaN
1+null//1
console.log( null instanceof object)//false
- Boolean类型
var found=true;
var message="hello world"
var messageAsBoolean=Boolean(message)//true
//false值:false, 空字符串"",0和NaN,null,undefined
var b=new Boolean(false)
console.log(b)//object
02. 24
- Number
var octalnum1=070//八进制的56
var octalnum2=079//无效的八进制数值 79
var octalnum3=08//无效的八进制数值 8
//八进制字面量在严格模式下是无效的,会导致支持的JavaScript引擎抛出错误
var hexnum1=0xA//十六进制的的10
var hexnum2=0x1f//十六进制的31
var floatnum1=1.1
var floatnum2=0.1
var floatnum3=.1//有效但是不推荐
var floatnum1=1.//小数点后面没有数字,解析为1
var floatnum2=10.0//**整数-解析为10**
//0.1+0.2!=0.3按分(而不是元)计算金额。百分比放大100倍计算以避免出现小数。
var result=Number.MAX_VALUE+Number.MIN_VALUE
isFinite(result)//false
Number()数值转换规则:
如果是Boolean值,true1 false0
如果是数字值,只是简单的传入和返回
如果是null值,返回0
如果是undefined值,返回NaN
如果是字符串:如果只包含数字,则转换成10进制,“011”-11(忽略前导0);如果包含有效的浮点格式,如“1.1”则转换成浮点数值(忽略前导0);如果包含有效的十六进制,则转换成相应的十进制数值;如果是空,则转换成0;若果是除了上述格式以外的字符,则转换成NaN
paerseInt()会忽略字符串前面的空格,知道找到第一个非空格字符。如果第一个字符不是数字字符或负号,则返回NaN。
parseInt("10",2)//2
parseInt("10",8)//8
parseInt("10",10)//10
parseInt("10",16)//16
parseFloat()只解析十进制值
parseFloat("1234blue")//1234
parseFloat("0xA")//0
parseFloat("22.5")//22.5
parseFloat("22.36.5")//22.36
parseFloat("0908.5")//908.5
paeseFloat("3.125e7")//31250000
- NaN
//任何涉及NaN的操作都会返回NaN。任何数值除以0都会返回NaN
isNaN(NaN)//true
isNaN(10)//false
isNaN("10")//false,会转换成数值10
isNaN("blue")//true
isNaN(true)//false,可以转换成1
0/0 //NaN
- String
var text="this is"
text.length//7
var num=10
num.toString()//"10"
num.toString(2)//"1010"
num.toString(8)//"12"
num.toString(10)//"10"
num.toString(16)//"a"
var value4
String(10)//"10"
String(true)//"true"
String(null)//"null"
String(value4)//"undefined"
null和undefined没有toString()但是可以String()
- object
var o=new Object();
var o=new Object//不推荐
- 一元加减操作符
var s1="01"
var s2="true"
var s3="z"
var s4="1.1"
var o={
valueOf:function(){
return -1
}
}
+s1//1
+s2//1
+s3//NaN
+s4//1.1
+o//-1
-s1//-1
-s2//-1
-s3//NaN
-s4//-1.1
-o//1
逻辑与
如果有一个操作数为null,undefined,NaN。则返回null,undefined,NaN
如果第一个操作数是对象,则返回第二个操作数逻辑或
如果两个操作数都是对象,则返回第一个操作数
如果两个操作数都为null,undefined,NaN,则返回null,undefined,NaN
如果第一个操作数是对象,则返回第二个操作数乘性操作符
Infinity*0//NaN
Infinity*非零数值//+Infinity or -Infinity
如果一个操作数不是数值则后台调用Number()将其转换成数值
- 减法
5-true//4
NaN-1//NaN
5-3//2
5-null//5
5-undefined//NaN
- 关系操作符
var result="23"<3//false
var result="a"<3//false,"a"转换成NaN
- with语句
var qs=location.search.substring(1);
var hostName=location.hostname
var url=location.href
with(location){
var qs=search.substring(1);
var hostName=hostname
var url=href
}
严格模式下不能用with,否则将视为语法错误
switch比较用的是全等操作符
严格模式:
不能把函数命名为eval或arguments
不能把参数命名为eval或arguments
不能出现两个命名参数同名的情况理解参数
修改arguments[i],对应的参数也会改变,尽管在不同的空间,其余arguments[i]会定义为undefined- 没有重载