前端常见面试题总结part2
2024-10-01 03:14:39
今天总结了几道,感觉非常有意思的题,有感兴趣的可以看下,有疑问请留言~
(答案在最后)
1.
考察自执行函数的this指向
审题要细心
var n = 2,
obj = {
n:2,
fn:(function(n){
n*=2;
this.n+=2;
console.log(this.n);
console.log(window.n);
return function(m){
this.n*=2;
console.log(m+(++n))
}
}(n)
};
var fn = obj.fn;
fn(3);
obj.fn(3)
console.log(n,obj.n);
- prototype:原型属性
_proto_: 原型链属性
hasOwnProperty:检测属性是否属于当前对象私有属性
function Fn() {
var n = 100;
this.AA = function () { }
this.BB = function () { }
}
Fn.prototype.AA = function () { }
var f1 = new Fn();
var f2 = new Fn;
console.log(f1.n);
console.log(f1.AA === f2.AA);
console.log(f1.__proto__.AA === f2.AA)
console.log(f1.__proto__.AA === f2.__proto__.AA)
console.log(f1.__proto_.AA === Fn.prototype.AA)
console.log(f1.hasOwnProperty('AA') === Fn.prototype.hasOwnProperty('AA'));
- 比较简单的一道题
console.log(a);
a = 20;
function fn(){
console.log(a)
var a = 12;
}
fn();
console.log(a)
- 考察变量提升
var foo = 1;
function fn(){
if(!foo){
var foo = 12;
}
console.log(foo);
}
fn();
- 函数形参变量和arguments存在映射
函数默认返回undefinedvar a = 4;
function test(x,y,a){
console.log(a);
arguments[2] = 100;
console.log(a)
}
a = test(1,2,3);
console.log(a)
- 函数形参变量和arguments映射建立在函数执行形参赋值的一刻
形参和实参一一对应,多出来的不建立映射function fn(x,y){
var arg = arguments;
arg[0] = 100;
var y = 200;
arg[1] = 300;
console.log(y);
}
fn(20);
- 逻辑与 逻辑或
console.log(0||1&&2||0||3&&2||1)
- 还是考察this
var num = 10;
var obj = {num:20};
obj.fn = (function(num){
num = this.num + 10;
this.num = num + 10;
return function(){
this.num += ++num;
}
})(num)
var fn = obj.fn;
fn();
obj.fn();
console.log(num,obj.num)
- 很长的一段
function Fn(){
this.x = 100;
this.y = 200;
this.getX = function(){
console.log(this.x)
}
}
Fn.prototype.getX = function(){
console.log(this.x)
}
Fn.prototype.getY = function(){
console.log(this.y)
}
var f1 = new Fn;
var f2 = new Fn;
console.log(f1.getX === f2.getX);
console.log(f1.getY === f2.getY);
console.log(f1.__proto__getY === Fn.prototype.getY);
console.log(f1.__proto__.getX === f2.getX);
console.log(f1.getX === Fn.prototype.getX);
console.log(f1.constructor);
console.log(Fn.prototype.__proto__.constructor);
f1.getX();
f1.__proto__.getX();
f2.getY();
Fn.prototype.getY();
10)还是this得问题(发现了好多this的题)
var name = 'window';
var Tom = {
name:'Tom',
show:function(){
console.log(this.name)
},
wait:function(){
var fun = this.show;
fun();
}
}
Tom.wait();
答案:
- 9
10
8 6 - undefined
false
false
true
true
true - a is not defined
- 12
- 3
100
undefined - 200
- 2(逻辑与的优先级高于逻辑或)
- 51 42
- false
true
true
false
false
Fn
Object
100
undefined;this:f1.proto ,上面没有x,所以是undefined
200
undefined;this:Fn.prototype,上面没有y,所以是undefined - window
最新文章
- clang: error: linker command failed with exit code 1 (use -v to see invocati
- scala-类
- win7下安装mysql
- 【python cookbook】【字符串与文本】5.查找和替换文本
- NeHe OpenGL教程 第二十三课:球面映射
- socket网络编程中read与recv区别
- 【HDOJ】2955 Robberies
- Android上传文件之FTP
- OC基础3:一些基本概念
- poj 3323 Matrix Power Series (矩阵乘法 非递归形式)
- React Native填坑之旅 -- 使用iOS原生视图(高德地图)
- java inputstream to string stack overflow
- JsonConvert.DeserializeObject反序列化
- NodeJS之异常处理
- 使用vue之directive设计列表加载更多
- Docker网络的基本功能操作示例
- Linux源码包安装过程及注意事项
- VMWare ESX/ESXi 虚拟机硬盘的厚置备(Thick Provision)与精简置备(Thin Provision)的转换
- 干货分享 9款精挑细选的HTML5应用
- 1358 棋盘游戏[状压dp]