第一天:
1.变量名的命名规则和规范
变量名命名规则:由字母(大小写),数字,下划线(_),美元符号($)组成
不能以数字开头
不能使用关键字和保留字
变量名命名规范:当有多个字母组成时,使用驼峰写法(分为两种:大驼峰(bigData),小驼峰(big-data)),尽量不使用中文,变量名尽量有意义
2.js中的数据类型
js的数据类型可以分为两种:一种是基本数据类型(数字,字符串,undefined,null,布尔),另一种是复杂数据类型(函数,对象,数组,日期对象,Set,Map等)
3.如何检测js中的数据类型
使用typeof,只有一个值是可以不加小括号,有多个值时,或者是表达式等需要加上小括号,就是typeof()
4.数据类型转换
转成数字:(1)Number()(2)parseInt():一位接一位的检测,直到出现不是数字的 (3)parseFloat()识别小数部分。
转成字符串:(1)其他类型.toString() (2)String(其他类型)
转成布尔:Boolean(),除了"",0,null,undefined,NaN为false,其他都为true
5.null和undefined的区别
null是有值,但是是空值,使用Number(null)时为数字0
undefined是在定义变量的时候没有赋值,其类型就为undefined
第二天:
6.==和===的区别
==双等号是比较两边的量是否相等,不考虑数据类型,也就是说1==‘1’为true,而三等号===全等是数值和数据类型都必须一样
7.前置++和后置++的区别
前置++:是先参与运算,后自增1
后置++:先自增1,然后参与运算
8.什么是switch的穿透现象
Switch的穿透现象就是指下面的case分支没有break时,不管条件是否成立,都会从满足第一个条件的case分支向下穿透执行,直到遇到break或者switch循环结束,穿透才停止。
9.逻辑与和逻辑或的优先级
逻辑与的优先级大于逻辑或
第三天
10.三元表达式语法
判断条件 ?条件成立执行的代码:条件不成立执行的代码
11.while循环语法,do while循环语法,for循环语法
while(条件){条件成立执行的代码段}
do{执行代码}while(条件)
for(开始条件;结束条件;变化量){代码}
12.break和continue的区别
break:当循环遇到break时,会立即执行循环,不会进行下一轮的循环
continue:当循环遇到continue时,会结束当前循环,开始下一轮循环
第四天
13.如何定义一个函数
定义一个函数有两种方式,一个是赋值式函数:var 函数名=function(){},另一个是声明式函数:function 函数名(){}
14.两种定义函数的区别
声明式函数可以先调用后定义
赋值式函数只能先定义后调用
15.什么是arguments
当调用函数的实际传参不清楚时,就可以用arguments来保存传递过来的实参,它是函数内置的一个变量。它拥有arguments.length属性来获取实参的个数。里面的参数值可以用索引的方式获取:arguments[i],遍历每一个参数可以从索引0到arguments.length-1.
16.什么是预解析及重名情况
预解析是代码执行之前的一个阶段
预解析的两种情况:当遇到var关键字时,其关键字会与变量名提前,但不会赋值;当遇到声明式函数的时候,会将函数名提前,并将其赋值为一个函数,等价于将整个函数提前。
与解析的重名情况:(1)变量名与变量名重名(以第一个定义的变量名为准,后面定义的无意义)(2)函数名与函数名重名(后面定义的函数名会覆盖前面的函数名,也就是以后面的函数名为准)(3)变量名与函数名重名(以函数名为准)
17.数据类型如何存储
简单数据类型存放在栈中,复杂数据类型的值存在堆中,其引用地址存放在栈中,并赋值给一个变量。
第五天
18.什么是作用域链
就是变量访问机制,当访问变量时,首先会在当前作用域进行查询,如果有该变量,则进行访问;如果当前作用域中没有,则向上一级作用域进行查找,如果上一级作用域中存在该变量,则进行访问,如果不存在,则继续向上一级作用域进行查找;以此类推,直到全局作用域,如果全局作用域中存在该变量,则进行访问,如果全局作用域不存在该变量,则会报错。
19.如何定义对象
定义对象有两种方式:(1)字面量定义 var 变量名={} 定义空对象 ,var 变量名={name:'mez',age:17}定义有内容的对象
(2)内置构造函数定义
var 变量名=new Object()内置构造函数定义
20.点语法和数组关联语法的区别
点语法:当对象的键名符合变量名的命名规则的时候,可以用点语法或数组关联语法进行访问
数组关联语法:当对象的键名不符合变量名的命名规则的时候,只能使用数组关联语法,还有就是键名是存数字或变量的时候。
21.数据类型赋值
简单数据类型的赋值就是正常赋值,使用(=)即可,改变其中的一个的值不会影响另一个
复杂数据类型的赋值一般不直接使用(=)赋值,因为这样的赋值是引用地址的赋值,改变其中一个,另一个也会改变,一般使用循环加索引的方式来赋值。
22.什么是递归函数,书写递归函数需要注意什么
递归函数就是一个函数内部,调用了自己,循环往复。在书写递归函数时,一般由以下内容构成:初始化,自增,执行代码,条件判断,不然就是一个没有尽头的递归函数,我们叫做死递归
23.如何定义数组
定义数组有两种方式:(1)字面量的方式:var 变量名=[] 定义一个空数组,var 变量名=[1,2,3,4,5,6] 定义一个有内容的数组
(2)内置构造函数的方式: var 变量名=new Array()定义空数组,var 变量名=new Array(5)定义指定长度的空数组,var 变量名=new Array(5,6,7,8)定义有内容的数组