js基础面试题

前端面试题

1、js的数据类型有哪些

答: **简单类型:String(字符串) number(数字) Boolean(布尔值)  undefined(未定义或未赋值) null(空)**
    复杂类型: Object (对象) Array(数组) Function(函数)

2、 typeof 返回的数据类型

答: number string boolean undefined  object  function 
   特殊情况:
   typeof null -->object
   typeof array -->object
   typeof typeof 任何类型  -->string
   typeof 

3、返回false的情况有哪些

答: 0  ""   null  false  NaN  undefined  不成立的表达式

4、typeof 和 instanceof 的区别

1、 typeof会返回一个变量的基本类型, instanceof 返回的是一个布尔值
2、instanceof 可以准确地判断复杂引用数据类型,但是不能正确判断基础数据类型
3、而typeof 也存在弊端,它虽然可以判断基础数据类型(null 除外),但是引用数据类型中,array也无法判断

5、== 和 === 的区别

答:== 表示是相等,只比较内容
   === 表示是全等,不仅比较内容,也比较类型

6、null 和 undefined 的区别

答:null 表示空值 没有获取到。typeof null 返回"object"
   undefined 表示未定义,声明没有值。typeof undefined 返回"undefined"

7、let、const、var 的区别

1、var声明变量存在提升(提升当前作用域最顶端),let和const是不存在变量提升的情况
2、var没有块级作用,let和const存在块级作用域
3、var允许重复声明,let和const在同一作用域不允许重复声明
4、var和let声明变量可以修改,const是常量不能改变

8、什么是作用域链

    1、作用域:分全局作用域和局部作用域
    2、在访问一个变量时,首先在当前作用域中找,如果找不到再到外层作用域中找,这样一层一层的查找,就形成了作用域链。

9、for in 和 for of 的区别

1、for…in是遍历数组、对象的key
2、for…of是遍历数组的value
例如:
let arr = ["a","b"];
  1)for (let key in arr) {
  console.log(key);  //0 1
  }
  2)for (let value of arr) {
  console.log(value);  //a b
  }

10、谈谈你对this的理解

普通函数指向:Window
事件处理函数:事件触发对象
答: this是个关键字,它的指向和函数的调用方式有关
1. 函数调用模式, this指向window
2. 构造函数调用模式, this指向新创建的实例对象
3. 方法调用模式, this指向调用方法的对象
4. 上下文调用模式, call和apply方法中, this指向方法内的第一个参数
                  bind方法中, bind创建的新函数的this绑定为bind方法中新的函数
5. 在事件处理函数中,this指向触发事件的当前元素
6. 定时器中,this指向window
7. 箭头函数中没有this指向问题,它的this和外层作用域的this保持一致
8. 匿名函数中的this总是指向window

11、数组去重的方式

1、 let arr = [1, 2, 3, 3, 4, 4, 5]
    let array = [];
    for (let i = 0; i < arr.length; i++) {
        if (array.indexOf(arr[i]) === -1) {
            array.push(arr[i])
        }
    }
​
2、 let arr = [1, 2, 3, 3, 4, 4, 5]
    let array = [...new Set(arr)]

数组的几种去重方法_Sailing678的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当面试官询问JavaScript基础面试题时,以下是一些常见的问题和答案: 1. 什么是JavaScriptJavaScript是一种高级的、解释型的编程语言,用于在网页上实现交互和动态功能。 2. JavaScript的数据类型有哪些? JavaScript有七种数据类型:字符串(String)、数字(Number)、布尔值(Boolean)、对象(Object)、数组(Array)、空(Null)和未定义(Undefined)。 3. 如何声明变量? 使用关键字`var`、`let`或`const`来声明变量。例如: ``` var x = 5; let y = "Hello"; const z = true; ``` 4. JavaScript中的事件是什么? 事件是指用户在网页上执行的动作,如点击按钮、鼠标移动等。通过JavaScript可以捕捉并对这些事件做出响应。 5. 什么是闭包? 闭包是指函数能够访问并操作其外部函数作用域中的变量。它通过将内部函数返回或传递给其他函数来实现。 6. 什么是原型链? 原型链是JavaScript中实现继承的机制。每个对象都有一个原型对象,而原型对象又有自己的原型对象,形成一个链式结构。 7. 如何遍历数组? 可以使用循环结构(如`for`循环或`forEach`方法)来遍历数组中的每个元素。 8. 什么是AJAX? AJAX(Asynchronous JavaScript and XML)是一种用于在后台与服务器进行数据交互的技术。它可以在不刷新整个页面的情况下更新部分页面内容。 9. 如何处理异步编程? 可以使用回调函数、Promise对象或async/await来处理异步编程。这些方法可以确保在异步操作完成后执行相应的操作。 10. 什么是作用域? 作用域是指变量的可访问范围。JavaScript中有全局作用域和局部作用域(函数作用域和块级作用域)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值