## 作用域与变量提升
#### 例子1
~~~
// 下列代码打印什么?为什么?
console.log(a) // undefined
var a = 1
console.log(b) // 报错 未定义
~~~
浏览器读取js会读取2次,第一次先找var,把var声明的变量a丢内存并且赋值undefined,第二次才是真正的执行,如果内存里面找不到某个变量,那么使用这个变量会报引用错误
<br>
#### 例子2
~~~
var a = 10
function test() {
a = 100
console.log(a) // 100
var a
console.log(a) // 100
}
test()
~~~
<br>
#### 例子3
~~~
var a = 100
function test() {
console.log(a) // undefined
var a = 10
console.log(a) // 10
}
test()
~~~
<br>
#### 例子4
~~~
var a = 100
function test() {
console.log(a) // 100
a = 10
console.log(a) // 10
}
test()
console.log(a) // 10
~~~
<br>
## Js的数据类型都有哪些?引用数据类型有什么特点?
* 基本数据类型:String(字符串)、Boolean(布尔)、Number(数字)、undefined等
* 引用数据类型:Object(对象) Array(数组)、Function(函数)、Date、null等
~~~
var obj1 = {
a:1
}
var obj2 = obj1
obj2.a = 2
console.log(obj1.a) //2
~~~
引用数据类型的特点,保存的是内存地址,他们真正的值是存放在那个地址里面,所以obj2改变了他的属性,obj1去找属性a其实就是去那个地址找,所有还是2
<br>
## 数组有什么用?对象有什么用?
数组作用:同类数据可以一起放在一个数组里面,比如商品列表,这样操作起来方便
对象作用:世界上所有东西都可以抽象成对象,对象里面可以有很多属性,比如人,人这个对象可以有年龄,姓名,身份证号码,学历等等
<br>
## 数组有哪些方法/函数?
* push 在数组后边添加元素
* pop 在数组后边删除元素
* shift 在数组前面删除元素
* unshift 在数组前面添加元素
* concat 两个数组合并
* slice 截取数组
* splice 删除或者插入元素
* join 数组通过分隔符合并成字符串
* reverse 数组倒转
* indexOf 通过传值找下标
<br>
## 字符串有哪些方法?
* spilt 字符串通过分隔符分割成数组
* indexOf 通过传值找字符的下标
* substring 截取字符串
<br>
## 函数的作用?
把常用的功能封装成函数,这样下次再使用这个功能就不用重复写代码
<br>
## 函数的return有什么作用?有什么特点?
return后边是什么,那么这个函数执行后就会变成什么
return的特点是return后边的代码是不会执行的,return是会马上终止函数的执行
<br>
## 函数的形参和实参有什么区别?
函数声明的时候,括号里面写的参数变量就是形参
当函数调用的时候传的变量就是实参,这个时候实参会赋值给形参
<br>
## 获取html的dom元素有哪些方法?
* document.getElementById
* document.getElementsByClassName
* document.getElementsByTagName
* document.querySelector
* document.querySelectorAll
<br>
## 类操作有哪些方法?
* classList.add 增加一个类
* classList.remove 删除一个类
* classList.contains 判断有木有这个类
<br>
## 怎么设置dom属性,怎么获取dom属性的值?
* setAttribute(属性, 值)
* getAttribute(属性)
<br>
## 怎么获取div的内容?怎么修改div的内容?
.innerHTML
.innerHTML = 内容
<br>
## 怎么获取文本框的内容?怎么修改文本框的内容?
.value
.value = 内容
<br>
## 怎么移除dom元素?
.remove
<br>
## 怎么绑定点击事件?
.onclick = function(){ }
<br>
## 点击事件里面的this一般指向谁?
谁点击,this就指向谁
<br>
## 例子讲解
<br>
<br>