关于JavaScript的一些易错题分析
1.关于浏览器执行Js的过程
// 1.1 js是编译语言, 如果碰到错误就会停止编译
// 1.2 只要是页面中引入的js都会解析
// 1.3 根据引入的顺序来执行
2.关于JavaScript的组成
// BOM是浏览器队形模型, DOM是文档对象模型, BOM包含DOM
3.关于变量的书写方式
// 命名规则:可以包含数字,字符,下划线,$,但是不能以数字开头
4.布尔型只有0是false,其他都是true
5.数据类型有7种
// 1.1 number, string, bool, undefined, null
// 1.2 对象, 函数, 数组
6.关于数组方法
// 1.1 push: 返回添加元素的数组长度
// 1.2 pop: 删除数组中的最后一个元素
// 1.3 unshift: 返回的也是数组的长度
// 1.4 shift: 删除数组中的第一个元素
// 1.5 splice: 删除数组中的某一个元素
7.访问对象的正确书写方式有两种
// 1.1 对象.属性
// 1.2 对象['属性名称']
// 1.3 对象[变量]
8.break 只能中断循环,对if和函数都无效,函数的中断用return,且return后面的不再执行了
9.关于js中的数据类型转换
// 1.1 + 如果两遍不是字符串, 就是运算符, 运算符会将两遍的数据转换为数值, undefined转换为数值是NaN
// 1.2 + 两遍有字符串, 那么 + 就成为字符串连接符
// 1.3 number 转换类型, 如果被转换的字符串中的非数值就会返回NaN
// 1.4 ture + 1, 系统会将true转换为数值, true转换为数值得到1
10.关于声明函数调用
1.1 函数内部声明的变量在函数外部不能使用
1.2 i 是在函数外部声明的,j是在函数内部声明的
11.关于下图代码运行结果是
分析: abj[aaa] = obj['name'] = 小黑
abj['aaa'] = undefined :表示访问一个对象数组中不存在的属性
abj.aaa = undefined:也表示访问了一个对象数组中不存在的属性
12.关于全局作用域和局部作用域的说明
let a = 20
function foo() {
console.log(a); //a是先使用,后定义了,所以会报错 (如果没有let a = 10的话 那么就会看全局的,a=20)
let a = 10 // 函数内部如果有声明变量值的话,优先看内部的,没有的话再看全局的
++a
console.log(a);
}
foo()
13.关于for循环的案例
14. 如果获取数组元素时索引越界,返回undefined
答案:D
15.作用域题分析
分析:函数内部中有声明变量a,根据作用域的原则:就近原则.函数内部变量a赋值给变量b的时候默认使用局部作用域a,那么就会出现a在未声明的时候就使用的报错