The article contains the basic knowledge of JavaScript…
Js简介
逐行解释,所以是脚本语言
解释型语言和编译型语言
解释型:边解释边执行
输入输出语句
Prompt、alert和console
console.dir
输出一个对象的所有属性和方法
document.write
和document.writeln
将字符串直接打印到浏览器
两者都是JavaScript向客户端输出的方法,对比可知写法上的差别是一个ln--line
的简写,换言之,writeln
方法是以行输出的,相当于在 write
输出后加上一个换行符。
示例1:
document.write("你好")
document.write("你好", "世界")
document.write("你好", "世界", "!")
document.write(Date())
示例2:
document.writeln("你好")
document.writeln("你好", "世界")
document.writeln("你好", "世界", "!")
document.writeln(Date())
标识符、关键字、保留字
变量
只声明不赋值
不使用var声明直接使用
也是可以的,但是它会变全局变量
尽量不要使用name作为变量名
普通变量名没有声明直接使用会导致报错,但是name不会报错,说明name也是有特殊意义的,因此不能使用name做变量名
数据类型
八进制、十六进制
最大值、最小值
数值型三个特殊值
注意:这种写法也可以表示无穷大和无穷小
非数字(NaN)
isNaN()
字符串类型
单双引号嵌套
字符串转义符
字符串长度length
布尔型参与运算
Null、undefined和NaN分别和字符串与数字相加
注意:null和数字相加就等于数字,而undefined或者NaN和数字相加最后结果是NaN
Typeof
类型转换
转换为字符串
转换为数值型
转换为Boolean型
注意浮点数的误差
应该避免直接用浮点数参与运算
“===”比较运算符
短路运算(重要)
应用
中断自增运算
运算符优先级
Switch效率比if更高
If需要从上到下判断,但是switch直接跳到符合条件的行,效率更高
Switch中的变量
Chrome中的断点
Chrome中断点的watch的使用
数组
修改数组长度
注意:不要给数组名赋值,否则里面的数组元素就都没有了
案例
1、
2、
函数
声明方式
注意:第二种是匿名函数
函数参数问题
如果函数的实参数超过形参数,那么将取到形参个数
如果实参数小于形参数,那么大于实参数的形参将是undefined
Return
Js的return只能返回一个值
返回多个值
如果有多个值,返回最后一个,想要返回多值可以用数组实现
没有return的函数
返回undefined
Arguments
只有函数才有arguments对象 而且是每个函数都内置好了这个arguments。当我们不知道要传几个实参的时候就可以用arguments了
Arguments是js特有的,当我们的函数没有形参但是调用的时候给了它实参的时候可以通过arguments来获取所有实参。
可以使用for循环遍历arguments
注意:当我们调用多次该函数的时候,arguments能获取所有函数传过来的实参:
案例
伪数组
类似arguments传回来的就是伪数组
Js特有的全局变量
这个num2虽然在function内部,但是它没有用var声明,而是直接赋值了,那么在这种情况下num2也是全局变量
注意全局变量只有在浏览器关闭的时候才会被销毁,因此比较占内存
Js没有块级作用域
我们发现这个num也是可以打印的
坑
变量声明初始化之前使用变量
结果:undefined
将函数赋值给变量,并在这个操作之前调用该变量
3问这个操作是不会出错的,4问是会出错的
原因:
举例说明:
1、
2、
3、
上述代码结果为undefined
4、
Js集体声明
注意var a = b = c = 9;这个写法相当于var a=9;b=9;c=9;会使得b和c变全局变量
对象
New关键字的原理
遍历对象
时间
数组
添加
删除
索引
转化成字符串
其他
基本包装类型
String
字符串的不可变
字符串的改变其实就是指针指向的改变,原来的字符串是一直存在的,因此不要频繁修改字符串或者拼接字符串
字符索引
根据位置返回字符
其他
简单类型和复杂类型
有个特殊情况 null