共 1 条评论关于"js面试题关于js基础的那些坑你还记得多少?"
最新评论
在这个框架肆意的年代,前端娃是越来越淡化js基础了,很多东西也确实在工作中运用场景越来越少,但倘若面对面试,这些基础知识都是无法逃避的现实,下面记录下这几天和群里一起回炉学习的作用域相关知识。
1 2 3 4 5 6 7 8 9 10 | function b() { console.log(a); var a = 10; function a() { }; a = 100; console.log(a); } b(); // 结果:ƒ a() { }和100 |
1 2 3 4 5 6 7 8 9 10 | function c() { console.log(a); function a() { }; var a = 10; a = 100; console.log(a); } c(); // 结果同上,依然还是ƒ a() { }和100 |
1 2 3 4 5 6 7 8 | var num = 99; function d() { console.log(num); var num = 10; } d(100); // 结果:undefined |
1 2 3 4 5 6 7 8 | var num = 99; function d() { console.log(num); const num = 10; } d(100); // 结果:Uncaught ReferenceError: Cannot access 'num' before initialization |
1 2 3 4 5 6 7 | (function e(num) { console.log(num); var num = 10; function num() { }; }(100)) // 结果:ƒ num() { } |
1 2 3 4 5 6 | (function e(num) { console.log(num); var num = 10; }(100)) // 结果:100 |
1 2 3 4 5 6 7 | var num = 100; (function e() { console.log(num); var num = 10; }(num)) // 结果:undefined |
1 2 3 4 5 6 7 8 9 | function b(x, y, z) { console.log(z); arguments[2] = 10; console.log(z) } var c = 3; b(1, 2, c); 结果:3和10 |
1 2 3 4 5 6 7 8 9 10 | function a(b) { var b = 100; console.log(b); function b() {} var b = 100; console.log(b); } a(10); // 答案:100和100 |
1 2 3 4 5 6 7 8 9 | function a(b) { console.log(b); function b() {} var b = 100; console.log(b); } a(10); // 答案:ƒ b() { }和100 |
1 2 3 4 5 6 7 8 | var a = 10; function a() { console.log(a); a = 100 } a() // 答案:报错,a不是一个函数,因为此时a=10 |
1 2 3 4 5 6 7 8 9 10 | var x = 10; function foo() { console.log(x) } (function () { var x = 20; foo(); })() // 答案:10 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var length = 88; function test(){ console.log('this',this) console.log(this.length) } var obj = { length:99, action: function(test){ test(); arguments[0](); } } obj.action(test,1,2,3,4) // 答案:88和5,前面this指向是window,后面this指向arguments |
1 2 3 4 5 6 7 8 9 10 11 12 | var length = 88; function test(){ console.log(this.length) } var obj = { length:99, action:test } obj.action() // 答案:99 |
1 2 3 4 5 6 7 8 9 | var length = 88; function test(){ console.log(this.length) } var arr = [test,1,2]; arr[0](); // 答案:3,this指向arr |
function是不是js数据类型的一种?我认为是的,虽然网上众说纷纭,但你通过typeof或者intanceof去检测可知,事实上就是真正切切存在这个类型
1 2 | console.log(typeof function(){}) console.log(function(){} instanceof Function) |
在函数里,单纯从变量申明权重来讲,函数变量名优先级最高 > 局部变量申明 > 函数形参
上一篇:理解js中的作用域链增强with上下文以及变量泄露问题
下一篇:由浅入深结合实际开发实例理解JavaScript面向对象
最新评论
支付宝扫一扫打赏
微信扫一扫打赏
感谢分享、学习一下、