js口试题|[2024-12-10]

打印 上一主题 下一主题

主题 1655|帖子 1655|积分 4965

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.延迟加载JS有哪些方式?

   延迟加载:async、defer
  例如:<script defer type="text/javascript" src='script.js'></script>
  defer:等html全部解析完毕,才会实行js代码,顺次实行js脚本
  async:async是和html解析同步的(一起的),不是顺次实行js脚本(谁先加载完谁先实行)。
  

   2.JS数据范例有哪些?

   根本范例:string、number、boolean、undefined、null、symbol、bigint(有争议)
  引用范例:object
  
  NaN是一个数值范例,但不是一个具体的数字。
  3.JS数据范例考题

  
  1. // 1.
  2. alter(true + 1)  // 2
  3. alter('name' + true) // nametrue
  4. alter(undefined + 1) // NaN
  5. alter(typeof null) // object
复制代码
字符串和其他范例 相加,酿成连接的形式。
  1. //2
  2. alter(typeof(NaN)) // number
  3. alter(typeof(undefined)) // undefined
  4. alter(typeof(null)) // object
复制代码
4.nul和undefined的区别

    1.作者在设计js的时候是先设计的null
             (为什么设计了null:最初设计js的时候借鉴了java的语言)
  2.null会被隐式转换成0,很不容易发现错误
  3.先有null后有undefined,出来undefined是为了填补之前的坑

具体区别:JavaScript的最初版本是这样区分的:null是一个表示“无”的对象(空对象指针),转为数值时为0;undefined是一个表示“无”的原始值,转为数值时为NaN。
  5.==和===有什么差异?

   ==:比力的是值
          string == number || boolean || ......都会隐式转换
          通过valueOf转换(valueOf() 方法通常由JavaScript在后台自动调用,并不显式地出现在代码中)
===:除了比力值,还比力范例
          建议使用===,因为==可能存在一些标题。

  6.JS微任务和宏任务

   1.JS是单线程的语言。
2.JS代码实行流程:同步实行完==》变乱循环
          同步的任务都实行完了,才会实行变乱循环的内容
          进入变乱循环:请求ajax、定时器、变乱......
  3.变乱循环中包罗:【微任务、宏任务】
          微任务:Promise.then
          宏任务:setTimeout..
  要实行宏任务的前提是清空了所有的微任务
  流程:同步==>变乱循环【微任务和宏任务】==>微任务==>宏任务==>微任务.....
为什么JS是单线程?
          单线程就是同一个时间只能做一件事。JS的单线程与它的用途有关,作为浏览器脚本语言,它的主要用途就是与用户互动,以及利用DOM,这就决定了它的单线程。
  1. setTimeout(function(){
  2.     console.log('1') // 宏任务
  3. })
  4. new Promise((resolve)=>{
  5.     console.log('1 promise 1');  // 同步
  6.     resolve();
  7. }).then(()=>{
  8.     console.log('微1') // 微任务
  9. }).then(()=>{
  10.     console.log('微2') // 微任务
  11. })
  12. console.log('2')  // 同步
  13. --------------------------
  14. 输出的结果:
  15. 1 promise 1
  16. 2
  17. 微1
  18. 微2
  19. 1
复制代码
7.JS作用域考题

   1.除了函数外,JS是没有块级作用域的
  2.作用域链:内部可以访问外部的变量,但是外部不能访问内部的变量
          留意:如果内部有,优先查找到内部,如果内部没有就查找外部的
  3.留意声明变量是用var照旧没有写(没有写默认window.)
  4.留意:js有变量提升的机制【变量悬挂声明】
  1. function fun(){ // var str; 你看不到的,是js独有的机制
  2.     console.log(str); // undefined
  3.     var str = '你好吗?'
  4.     console.log(str); // 你好吗?
  5. }
复制代码
5.优先级:声明变量 > 声明平凡函数 > 参数 > 变量提升
  口试的时候怎么看:
   1.本层作用域有没有此变量【留意变量提升】
  2.留意:js除了函数外没有块级作用域
  3.平凡声明函数是不看写函数的次序
  
   考题1:
  1. function c(){
  2.     var b = 1;
  3.     function a(){  // 注意,此处有变量提升 var b;
  4.         console.log(b);
  5.         var b = 2;
  6.         console.log(b);
  7.     }
  8.     a();
  9.     console.log(b);
  10. }
  11. c();
  12. -----------------
  13. 运行结果:
  14. undefined
  15. 2
  16. 1
复制代码
考题2:
  1. var name = 'a';
  2. (function(){ // var name;
  3.     if(typeof name == 'undefined'){
  4.         var name = 'b';
  5.         console.log('111'+name);
  6.     }else{
  7.         console.log('222'+name);
  8.     }
  9. })
  10. -----------------
  11. 得到的结果都是: 111b
复制代码
  1. <script type="text/javascript"> // var a;
  2. console.log(a);
  3. if(false){
  4.     var a = 10;
  5. }
  6. console.log(a)
  7. </script>
  8. ----------------------
  9. undefined
  10. undefined
复制代码
考题3:
  1. var bar = 1;
  2. function test(){ // var bar;
  3.     console.log(bar); // undefined
  4.     var bar = 2;
  5.     console.log(bar); // 2
  6. }
  7. test()
  8. --------------------
  9. undefined
  10. 2
复制代码
考题4:
  1. function fun(a){
  2.     var a = 10;
  3.     function a(){}
  4.     console.log(a);
  5. }
  6. fun(100);
复制代码
8.JS对象考题

JS对象留意点:
   1.对象是通过new利用符构建出来的,所以对象之间不相等
  2.对象留意:引用范例
  3.对象的key都是字符串范例
  4.对象如何找属性|方法
          先在对象自己找 ===> 构造函数中找 ===> 对象原型中找 ===> 构造函数原型中找 ===> 对象上一层原型找
    考题1:
  [1,2,3] === [1,2,3]  // false
  
考题2:
  1. var arr1 = [1,2,3]
  2. var arr2 = arr1;
  3. console.log(arr1 === arr2)  // true
复制代码
考题3:
  1. var obj1 = {
  2.     a:'hello'
  3. }
  4. var obj2 = obj1;
  5. obj2.a = 'world';
  6. console.log(obj1); // {a:world}
  7. (function(){
  8.     console.log(a); // undefined
  9.     var a = 1;
  10. })();
复制代码
考题4:
  1. var a = {}
  2. var b = {
  3.     key:'a'   
  4. }
  5. var c = {
  6.     key:'c'
  7. }
  8. a[b] = '123'
  9. a[c] = '456'
  10. console.log(a[b]); // '456'
复制代码
考题5:
  1.每一个函数都自带一个prototype【原型】
          留意:对象拥有__proto__
  2.new Fun 该Fun构造函数的原型指向于对象(new Fun)的原型
  1. function Fun(){
  2.     this.a = '在Fun函数中添加的'; // 2
  3. }
  4. Fun.prototype.a = '这是Fun原型添加的'; // 4
  5. let obj = new Fun(); // var obj.a; undefined // 6
  6. obj.a = '对象本身'; // 1
  7. obj.__proto__.a = '这是对象原型添加的'; // 3
  8. Object.a = '这是Object添加的'; // 5
  9. console.log(obj.a);
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

写过一篇

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表