NO.1 script引用
根据HTML加载顺序原则
1.script一般引用在body结束标签之前
2.如果script在header中引用,可以使用defer="defer"这个属性,使得脚本遇到/html后执行(注意,只是延迟执行,但是开始会立即下载)
3.异步脚本,async属性,告诉浏览器立即下载,但是执行顺序是根据下载完的先后来决定
NO.2 严格模式
JavaScript中如果要实现严格模式,在js文件中d顶部加入use strict
,这样的话,对某些不安全的操作也会抛出错误
NO.3 数据类型
1.Undefined类型,只有一个值,就是undefind,在var声明变量后没有对其初始化,这个变量的值就是undefind
不过对于声明过的变量x和没声明过的变量y,typeof(x&y),都会返回undefind
2.Null类型,只有一个值,就是null,如果变量将来用于保存对象,建议将变量初始化为null,值得注意的是undefind == null结果是true
3.Boolean类型,有两个值,false和true
转型函数,Boolean(),可以使得其他值转化为布尔值
4.Number类型
整数:
var a = 55 //整数
var a = 070 //八进制的56(在严格模式下无效)
var a = 0xA //十六进制的10
浮点数:
var a = 1.1
var a = 1.0(将自动转化为整数)
NaN 非数值,和任何值都不相等,包括本身
NaN == NaN //false
isNaN(),判断参数是否"不是数值"
isNaN(10) //false
数值转化:
有三个函数Number(),parseInt(),parseFloat()
5.String类型
转化为字符串toString()
6.object类型
var o =new Object()
Object的每个实例(所有对象)都具有下列属性和方法:
1.constructor 保存着用于创建当前对象的函数,叫做构造函数,对于var o =new Object()来说,Object()就是构造函数
2.hasOwnproperty 用于检查给定的属性在当前对象中是否存在
如:o.hasOwnproperty("name")
3.isPrototypeOf(object) 用于检查传入的对象是否是传入对象的原型
- propertyIsEnumerable("propertyname"),用于检查给定的属性是否能够使用for-in语句
- toLocaleString() 返回对象的字符串表示,该字符串与执行环境地区对应
- toString() 返回对象的字符串表示
- valueOf() 返回对象的字符串,数值或者布尔值表示,通常和toString()返回的值相同
NO.4 操作符
a++ 和 ++a
a++表示递增1,但是当前未赋值到当前变量
++a表示递增1,但是已经赋值到当前变量
一元操作符+
var a = 25
a = +a //结果还是25
一元操作符+放在数值前面,没人任何影响,放在非数值对象前时,会执行Number()方法,将之转化为数值
乘,除和余数操作符,在参与计算的值不是数值时,后台都会先用Number()转化为数值。
加性操作符:
如果只有一个操作数是字符串,那么会把另外一个操作数也转换为字符串,然后拼接起来
NO.5 函数
1.函数参数
JavaScript的函数参数和大多数的其他语言不同,js的函数不介意传递进来多少个参数,也不在乎进来的参数是什么数据类型。
原因是参数在js内部是一个数组来表示的,函数始终接受的都是这数组,不关心数组里有什么东西
那么在函数体内,也可以用arguments对面来访问函数的参数,例如:
function sayHI(name,message){
alert("hello" + arguments[0] +arguments[1])
}
所以参数名称只是提供便利,不是必须的。
利用函数可以传入不同个数参数的特性,可以分别实现适当的功能,例如:
function doAdd(num1,num2){
if(arguments.length == 1){
alert(arguments[0]+10)
} else if (arguments.length == 2){
alert(arguments[0]+arguments[1]
}
}
以上函数的功能是,当传入一个参数时,输出参数+10,当传入两个参数时,输出参数1+参数2
JavaScript函数无需定义返回值,因为在它可以任何时候可以返回任何值
JavaScript函数没有函数签名的特性,所有不能重载