前端js面试测试题,this指向性,闭包
前端js面试测试题:
JavaScript 测试题
问题描述:
@M-z
(function(){
var a=b=5
})();
console.log(b);//b=5;
if( {
a:1,b:2}=={
a:1,b:2}){
console.log(true)
}else{
console.log(false)
}
//false; 因为两个对象的引用地址值不一致,虽然值相同
var m={
x:1,y:2}
n=m;
n={
x:100,y:200};
console.log(m.x,n.y)
// 1 100
function fn(){
console.log(a);
console.log(foo());
var a=1;
function foo(){
return 2;
}
}
fn()
// undefined 2;
var a=[1,2,3]; var b=JSON.parse(a); console.log(typeof b); console.log(typeof a); // b 为 object //a 为 string
1. var b=[];
if(b[0]){
console.log(b==true);
}else{
console.log(this is + b[0])
}
//this is undefined
var person={
1:98066,
‘name-first’:john sun
};
console.log(person.1)
// Uncaught SyntaxError: Unexpected number
//应该是person[1];
//如果以number类型作为对象的key值,需要写成 person["1"] 或者person[1]
var f=function g(){
return 23;
}
console.log(f())
// 23 类型number
console.log(g)
//Uncaught ReferenceError: g is not defined
var callback=function(){
};
console.log(typeof callback)
//function
var obj=; Object.prototype.toString.call(obj) 检测出obj的类型是? //Object.protoype.toString.call(obj) 可以检测变量的类型
var y=18, rs="";
if(y%4==0 || y%6!=0){
rs="yes";
}else{
rs="no";
}
console.log(rs);
// no
var fn=function (f){
console.log(typeof f);
var f=2;
function f(){
}
console.log(typeof f);
}
// function
//number
var arr=[apple,orange,banner]; console.log(arr.slice()); console.log(arr) // [apple,orange,banner] //[apple,orange,banner] //并未截取数据
function superFn(){
var x=0;
return function(){
x++;
console.log(x);
}
}
var s1=superFn();
var s2=superFn();
s1();
s1();
s1();
s2();
//1
//2
//3
//1
//js 代码至上而下执行,这里没有异步过程 所以s1执行了,s2并没有执行
var name=global
var obj={
name:obj,
sayName:function(){
console.log(this.name);
}
}
obj.sayName();
var func=obj.sayName;
func();
//考察this指向性 this指向的是最终调用的那个对象
//obj obj调用了sayName() this指向obj
//global 由于 func=obj.sayName 是个function , function 存在全局中, 那么func() 就是相当于 window.func() 实际上是window 调用func() this指向window this.name=window.name;
var a=1;
function add(c){
var b=2;
var sum=a+b+c;
}
add(2)
// undefined 因为没有返回结果 没有返回值 加个return 将返回结果
将值加入到数组最前面的方法是? 1.push() 2.shift() 3.unshift() 4.pop() //push 是向后面添加,返回数组长度 shift删除第一个内容并且返回删除的数组,unshift是添加到第一位并且返回删除的数组 pop是删除数组最后的元素,并且返回删除的数组
原因分析:
<
