第2章,在html中使用JavaScript
Html引入外部js脚本
<script type="text/javascript" src="https://www.jb51.net/test.js">两个</script>之间不应放脚本,因为并不会被执行</script>
<script>标签有一个defer属性可以延迟脚本执行,但是并不保证会按脚本排列顺序执行
建议:将脚本引入放在<body>标签的所有内容之后,而不放在<head>标签中进行引入,加快页面响应
<noscript></noscript>标签中的内容会在浏览器不支持脚本或脚本被禁用的时候输出,启用了脚本的浏览器将不会看到标签中的
内容
第3章,基本概念
标识符
第一个字符必须是字母,下划线(_)或美元符号($),有效命名为字母、数字、下划线和美元符号构成的
采用驼峰命名法:第一个字母小写,后面的每个单词首字母大写
单行注释:
//这是单行注释
多行注释:
/*这是
多行
注释
*/
typeof 操作符
typeof – 判断给定变量的数据类型
返回:
“undefined” – 未定义的数据类型
“boolean” – 布尔值
“string” – 字符串
“number” – 数值
“object” – 对象或者NULL
“function” – 函数
注:函数在js中是对象,不是数据类型,因此使用typeof区分函数和对象是有必要的
typeof在有些时候会返回令人迷惑但技术上确是正确的值,例如,null和对象,两者都会返回“object”
null与undefined是相等的,null == undefined 将返回true
进行算术计算时,所有的八进制和十六进制都将转换成十进制
Infinity 无穷大,有正负无穷大,可以使用isFinite()判断是否无穷大
Number.MAX_VALUE,Number.MIN_VALUE分别保存着数值类型的最大值和最小值
Number.NEGATIVE_INFINITY和Number.POSITIVE_INFINITY分别保存着负和正无穷大
NaN 非数值,可以使用isNaN判断一个变量是否非数值
数值转换
强制转换Number(),但是结果并不合理,建议使用parseInt()函数,并带入需要转换的基数
例:
parseInt(“10”,2); //以二进制解析 parseInt(“10”,8); //以八进制解析
不带入基数意味着让parseInt自己决定如何解析字符串,这会在某些时候造成错误
parseFloat()与parseInt()基本相同,将字符串解析成浮点数,始终忽略前导零,只解析十进制值,十六进制将被解析成0,因此
他没有第二个参数
字符串类型
字符串类型变量是不可变,亦即字符串变量是为一个常量,可以使用单引号('),也可以使用双引号(”)定义字符串变量,但必须匹配,如果需要混用,建议加上转义字符(\)
使用toString()函数将一个值转换为字符串,数值则可以使用基数值进行转换
例:
var num = 10; num.toString(“2”); //”1010” num.toString(“8”); //”12”
也可以使用String()进行强制转换
Object类型
constructor:构造函数
hasOwnProperty(propertyName):检查给定的属性在当前对象中是否存在
isPrototypeOf(object):检查传入的对象是否是传入对象的原型
propertyIsEnumerable(propertyName):检查给定的属性是否能够使用for-in语句来枚举,与hasOwnProperty一样,给定的属性名必须以字符串的形式指定
toLocalString():返回对象的字符串表示,与执行环境的地区对应
toString():返回对象的字符串表示
valueOf():返回对象的字符串、数值或布尔值表示。通常与toString返回相同
操作符
按位非:~,按位与:&,按位或:|,按位异或:^,左移:<<,有符号右移:>>(以符号位填充),无符号右移:>>>(以零填充),逻辑非:!,逻辑与:&&,逻辑或:||
关系操作符:<,>,<=,>=
相等和不相等:==,!=,先转换再比较
全等和不全等:===,!==,只比较,不转换,类型不同则不同
条件操作符:? :,三目运算符
逗号操作符:(,),返回最后一个表达式的值:var num = (3,5,6,2),num = 2
语句
if{},do{}while();,while(){},for(;;){}
for-in语句:
精准的迭代语句,可以用来枚举对象的属性
for(property in expression) statement
例:
for(var propName in window){ document.write(propName); }