JavaScript高级的学习在于对象的学习,而这些的基础就是JavaScript基础了,所以在学习高级之前先将JavaScript基础部分复习一下吧.
第一部分:变量
变量是贯穿了JavaScript学习和应用的每个方面,在变量部分我们需要掌握以下几个方面:
1 变量作用域
变量的作用域分为两个:全局作用域和局部作用域
全局作用域:指script标签下的全局范围内.
全局变量:指在script标签根节点声明的变量为全局变量,或者window.变量的方式获取的变量也为全局变量,或者函数中未被声明的变量会进行隐式声明成全局变量.
局部作用域:指函数内部范围.
局部变量:指在函数内部声明的变量.
2 变量的声明提前
在html页面加载html代码时,会先将变量的声明提升至变量对应作用域的最前面.
也就是说如果在变量声明赋值之前调用变量的话,只能获取到变量但是无法获取到变量的赋值,返回的undefined.
3 变量的调用
变量的调用需要注意两点:
1. 局部作用域调用变量时,先查找是否存在对应变量名的局部变量,如果没有就去全局中找对应变量名的全局变量.
2. 函数中发生隐式声明的全局变量,需要先调用函数后才能在全局作用域中读取到该变量.
第二部分:数据类型
JavaScript中注意的数据类型分为基本类型和复杂类型,每个包含和注意的部分有许多,其中我们需要注意的有:
1 数据类型分类
基本类型:数组,字符串,布尔,null,undefined.
复杂类型:对象类型(键值对的集合):window,document,数组,正则,函数等
2 检测数据类型
我们可以使用typeof检测不同类型的数据,但是其中有几个是特殊的.
null检测到数据类型是"object",function检测到数据类型是"function".
其他的对象的数据类型都是"object",还有基本数据检测到的是对应的数据类型.
3 数据类型转换
类型转换中最主要的是数字和字符串的相互转换.
数字转字符串:toString(),+"",String().
字符串转数字:Number(),perseInt(),parseFloat().
4 值类型和引用类型的传递
值类型就是基本数据类型,引用类型就是复杂数据类型,两者的值传递是不同的.
值类型的传递:发生传递时是将一个变量中的值复制一份给另一个变量.
引用类型的传递:发生传递时是将指向对象的地址引用给另一个变量.
第三部分:运算符
运算符类型很多,我们不止需要知道有哪些运算符,还需要知道每个运算符对应的功能是哪些.
1 算术运算符:+,-,*,/,%,++,--
注意:++a:先自加后参与运算
a++:先将原值参与运算,后自加
2 赋值运算符:=,+=,-=....
3 比较运算符
== 会进行隐式数据类型的转换,再判断值,并不考虑数据类型
=== 不会进行隐式数据类型的转换,先判断数据类型后再判断值
4 逻辑运算符
&&:如果左边的值为真值的话,直接返回右边的值;如果左边的值为假值的话,直接返回左边的值.
||:如果左边的值为真值的话,直接返回左边的值;如果左边的值为假值的话,直接返回右边的值.
注意:
转换为布尔为假的值有:0,false,null,undefined,NaN,""
5 三元运算符
判断语句?成立时输出的值:不成立时输出的值;
第四部分:语句
语句主要包含以下几个:
选择语句:if,if..else,if..elseif..else,switch(){case}
循环语句:while,do..while,for,for..in
语句的使用需要根据实际情况而定,在功能满足的情况下,视具体情况将语句进行简化.
第五部分:函数
函数的使用主要是函数的参数,返回值,和函数的声明
1 函数的参数
函数的参数分为形参和实参:
形参:指的是函数声明时定义的函数内部需要用到的参数.
实参:指的是函数调用时传递给函数的参数.
2 返回值
返回值的存在与否决定于return
如果函数内没有return护足return后没有需要返回的值,则我们获取到的返回值为undefined.如果return后有值,则获取到的返回值就是这个值.
注意:return后除了声明的语句以外都不在执行,原因是声明语句会被提升至作业域的最前面
3 函数声明提升
函数声明也会像变量声明一样被提升至作用域的最前面,但是如果函数声明和变量声明同时被提升时,会先提升变量声明后提升函数声明.