Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
  • S001-输出什么

S001-输出什么

1.

let a = {},  
b = '0',  
c = 0;  
  
a[b] = '唐诗';  
  
a[c] = '宋词';  
  
console.log(a[b]);

答案

宋词

解析

js 中对象的 key 只能是 string、symbol a[b] 与 a[c] 都可看做是 a['0'], 最后一次赋值是 宋词 所以结果也就是 宋词

2.

let a = {},  
b = {  
    n: '1'  
},  
c = {  
    m: '2'  
};  
  
a[b] = '唐诗';  
  
a[c] = '宋词';  
  
console.log(a[b]);


答案

宋词

解析

会调用对象的 toString 方法, 所以 b、c 都等于 [object Object]

3.

var test = (function (i) {  
    return function () {  
        alert(i *= 2);  
    }  
})(2);  

test(5);

答案

'4'

解析

如果你的回答是 4 也没啥毛病,但是准确些应该是 '4',因为 alert 只能输出字符串类型的值 test 是一个立即执行函数, 传入了 2 所以等于 4 调用 test(5) 时,实际上是在调用 test 变量所引用的匿名函数。这个匿名函数在定义时,已经通过闭包的方式访问了立即执行函数中的变量 i。在匿名函数中直接使用 i 这个变量而不需要通过参数来传递。所以test(5) 传递的参数无效

Symbol

let a = {},
b = Symbol('0'),
c = Symbol('0');
a[b] = '唐诗';
a[c] = '宋词';
console.log(a[b]);

答案

唐诗

解析

Symbol 作为 key 的时候,是不可以重复的,所以 a[c] 不会覆盖 a[b], Symbol 创建的数据是唯一的与里面的值无关

Edit this page
最近更新: 2025/6/27 02:24
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人