JavaScript 面试常考题库【1】

JavaScript第一篇


一些常见的面试题内容,希望也能助你一臂之力🌸🌸🌸🌸🌸

Q1、JavaScript 的数据类型有哪些?

A:基本数据类型 string ,number ,Boolean,undefined,null,symbol,bigint(symbol和bigint为ES6以后版本新增)
B:引用数据类型 object(包括:array和function)
//举个例子
eg1:Boolean与number的运算是什么产物?
 console.log(true+1); //结果 2,将true 类型转为数字1
 console.log(false+1); //结果 1,将flase 类型转为数字0
 console.log(true*1); //结果 1
 console.log(false*1); //结果 0
 
eg2:Boolean与string的运算是什么产物?
  console.log(true+'name'); //结果 truename,将布尔值转为字符串
  console.log(false+'name'); //结果 falsename
  
eg3:undefined NaN 与number的运算是什么产物?
 console.log(undefined+1); //以下结果均为NaN
 console.log(NaN+1);
 console.log(undefined+NaN);

eg4:undefined NaNnull到底是什么类型?
 console.log(typeof null); //Object
 console.log(typeof NaN); // number,但是不是具体的数字
 console.log(undefined); // undefiend

Q2、null和undefiend的区别?

野史:在早期的网页中 null会被隐式转为0,很不容易发现错误。所以后来引入undefiend,其实就是为了补坑之前的这个坑。

 A: null是一个表示“无”的对象(空对象指针)
 B: undefined表示值,转为数值时为NAN

Q3、= 和===又什么不同?

== :比较值
===:值和数据类型
//举个例子
== 号判断:数值相等则就为true
console.log(null == undefined); //true
console.log(1=='1');     //string == number || 
console.log(true == 1); // boolean == number || 
console.log([1,2]=='1,2'); //object == number || object转为基本类型

=== 号判断:不仅是数值相等,还需要数据类型相等
console.log(null === undefined);//false
console.log(1==='1'); //false
console.log(true === 1); //false
console.log([1,2]==='1,2');//false

Q4、延迟加载js有哪些方法?

  async defer
  eg:<script  defer type="text/javascript" src="srcipt.js"></script>
    defer:等全部的html解析完成,才会执行js代码,顺次执行js脚本
    async:async是和Html同步解析的,谁先加载完js先执行

Q5、JS的微任务和宏任务是什么?

1、js是单线程的
2、js代码的执行流程
	同步任务执行完 --> 事件循环【宏任务、微任务】 --> 微任务 -->宏任务
    进入事件循环【请求、定时器、事件....3、微任务 :promise.then
   宏任务:setTimeout
//举个例子
console.log(111);  //1、先执行
for(var i=0;i<3;i++){  // 3、同步任务: i=3,不满足for循环条件,跳出,进入事件循环
  setTimeout(function(){ //定时器,进入事件循环,间隔1s打印3,
         console.log(i);    // 3,3,3
     },1000*i)
 }
 console.log(222);// 2、先执行
执行结果:111 222 3(打印3次)

setTimeout(function(){
  console.log('宏1'); //5、宏任务
  })
  new Promise((resolve)=>{
      console.log('同步1'); //1、同步
      resolve();
  }).then(()=>{
      console.log('微1');//3、微任务
  }).then(()=>{
      console.log('微2');//4、微任务
  })
  console.log('同步2');//2、同步
执行结果:同步1 同步2121

Q6、js作用域

1、除了函数外,js是没有块级作用域的
2、内部可以访问外部的变量,但是外部不能访问内部的变量
3、变量查找会优先在内部查找变量
4、申明变量使用var ,没有使用就是window
5、变量提升机制【变量悬挂声明】
//举个例子
//1、优先找内部里面有的
 var a = 10;
 function fun(){
     var a = 20;
     function foo(){
         var a = 30;
         console.log(a); //30
     }
     foo(); //函数调用
 }
 fun();//函数调用
 结果:30

//2、内部可以访问外部的变量,但是外部不能访问内部的变量
var a = 20;
//  console.log(b); //报错
 function fun(){
    var b = 10;
     console.log(a); // 20
    };
    fun();
  结果:报错  20

//3、申明变量使用var ,没有使用就是window
(function(){
  var a = b = 10; // window.b
     //b 没有使用var,全局
     // 相当于 b = 10;
 })();
 // console.log(a); //报错,使用了var。(函数外部访问内部变量)
 console.log(b); 10

//4、变量提示
function fun(){
  console.log(a);  //undefined
  }
  fun();
  var a = 10;
相当于是:
var a;
function fun(){
     console.log(a);  //undefined
 }
 fun();
 a = 10;

Q7、js对象

 1、js对象是通过new操作符构建出来的,所以对象之间不相等
 2、但是要注意 引用类型
 3、对象的key都是字符串类型
 4、对象查找属性|方法的过程
 先在对象本身找 -->构造函数中找 --> 对象原型中找 --> 构造函数原型中找 -->对象的上一层中找
//举个例子
	 console.log([1,2,3] === [1,2,3]) //false
	 console.log(typeof [1,2,3]); //object
	
	var obj1 = {
	 a:'hello'
	 }
	 var obj2 = obj1;
	 console.log(obj2);//{a: 'hello'}
	 obj2.a = 'world'
	 console.log(obj1); //{a:'world'},属性值被修改
	 (function(){
	     console.log(a);//undefined,变量提升,未赋值
	     var a = 1; 
	 })();
	
	var a = {};
    var b = {
        key:'a'
    }
    var c = {
        key:'c'
    }
    a[b] = '123',
    console.log(a[b]);//123
    a[c] = '456'
    console.log(a[b]); // 456
    console.log(a[c]);//456

休息一下,下一篇下一篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值