# 关于JavaScript日常的一些易错题分析#

241 阅读2分钟

关于JavaScript的一些易错题分析

1.关于浏览器执行Js的过程

    // 1.1 js是编译语言, 如果碰到错误就会停止编译
    // 1.2 只要是页面中引入的js都会解析
    // 1.3 根据引入的顺序来执行

2.关于JavaScript的组成

    // BOM是浏览器队形模型, DOM是文档对象模型, BOM包含DOM

    

3.关于变量的书写方式

    // 命名规则:可以包含数字,字符,下划线,$,但是不能以数字开头

4.布尔型只有0是false,其他都是true

image.png

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.关于声明函数调用

image.png 1.1 函数内部声明的变量在函数外部不能使用

1.2 i 是在函数外部声明的,j是在函数内部声明的

11.关于下图代码运行结果是

image.png

image.png

分析: 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循环的案例

image.png

14. 如果获取数组元素时索引越界,返回undefined

image.png 答案:D

15.作用域题分析

image.png 分析:函数内部中有声明变量a,根据作用域的原则:就近原则.函数内部变量a赋值给变量b的时候默认使用局部作用域a,那么就会出现a在未声明的时候就使用的报错

16. i++ 和++i

image.png

image.png