首页 > 其他分享 >第三周练习题

第三周练习题

时间:2022-08-16 20:13:35浏览次数:88  
标签:练习题 function return undefined 第三周 typeof var 函数

一、代码识别(填出下列结果 并讲出为什么)

1、(function(){ 
return typeof arguments; 
})();

Object,(因为arguments是一个伪数组对象)

2、var f = function g(){ return 23; };

console.log( typeof g())

报错(这种形式叫做命名的函数表达式,它的名字g只在函数体内可见。在函数外部不可见,所以报错)

3、(function(x){

delete x;

return x;

})(1);

1(函数外面加括号是自执行函数调用函数,调用函数传参传进去了一个1,delete方法只能删除对象的属性,x根本删不了,所以该函数打印的结果是返回的x=1)

4、var y = 1, x = y = typeof x; 
console.log(x);

Undefined(连等号的赋值过程是从右往左运算的。一开始x没有被赋值所以是undefined,然后x和y也都是undefined,所以结果是undefined)

5、(function f(f){ return typeof f(); })(function(){ return 1; });

Number(自执行函数返回值为1,所以调用f(f)的参数f=1,所以f()的类型就是number)

6、var foo = { 
bar: function() { return this.baz; }, 
baz: 1 
}; 
(function(){ 
return typeof arguments[0]; 
})(foo.bar);

Undefined(this的指向问题,首先这个foo里面this指向的是调用者自身(这里是foo.bar),但是函数里面不存在baz这个属性所以是undefined,然后arguments[0]就是一个函数自执行的结果,this指向arguments[0],所以结果也是undefined)

7、var foo = { 
bar: function(){ return this.baz; }, 
baz: 1 

typeof (f = foo.bar)();//问最后一行的执行结果

Undefined(this的指向问题,首先这个foo里面this指向的是调用者自身(这里是foo.bar),但是函数里面不存在baz这个属性所以是undefined)

8、var f = (function f(){ return “1”; }, function g(){ return 2; })(); 
typeof f; //问最后一行的执行结果

Number(这里是分组选择符——选择变量的最后一位,所以后面的一个自执行函数的返回结果是数字2,所以类型为number)

9、var x = 1; 
if (function f(){}) { //在if判断里面直接被解析为boolean类型
x += typeof f; 
} //x值为多少

1undefined(函数的声明不允许写在if判断条件中,写了会全部返回真,因为只有0 空字符串,undefined,null,false才是假。这里分f没有定义所以是undefined,然后x=1,1+undefined所以结果就是1undefined)

10、var x = [typeof x, typeof y][1]; 
typeof typeof x; //问最后一行的执行结果 

String(通过判断typeof判断typeof,肯定返回字符串)

11、(function(foo){ 
return typeof foo.bar; 
})({ foo: { bar: 1 } }); 

Undefined(参数是一个对象,函数体内没有bar这个方法,所以是undefined)

12、(function f(){ 
function f(){ return 1; } 
return f(); 
function f(){ return 2; } 
})(); 

2(函数声明是在预编译的时候就先被解析了,所以在return之前,函数体里面两个函数就被执行了,第二个函数的结果覆盖第一个函数,所以结果为2)

13、function f(){ return f; } new f() instanceof f;//问这一行的值

False(instanceof作用是判断其左边的对象是否为右边类的实例。返回一个布尔值,这里返回false,但是这个函数的书写有问题,构造函数在执行完毕之后就变成了f值,不要给构造函数return)

14、with (function(x, undefined){}) length; //问length的值为多少 
//with就是一个读写器,题意是取出函数的length属性

2(这里是函数的长度,其实就是函数形参的长度,所以长度为2)

15、console.log(a);

var a=1;

function a(){}

a=2;//a的结果是什么

f a(){}(代码在进行预编译的时候首先var了一个a,但是不会进行赋值的解析,a首先是undefined,然后解析了函数a(),所以刚开始打印的a是一个空函数f a(){})

16、setTimeout(() => { console.log(1)},0);console.log(2)

2 1(setTimeout(fn,0)的含义是,指定某个任务在主线程最早可得的空闲时间执行,也就是说,当前代码执行完(执行栈清空)以后,尽可能的早执行,它在任务队列的尾部添加一个事件,因此要等到同步任务和任务队列的事情都处理完,才会得到执行,所以先打印2,然后才打印的1)

17、['1','2','3'].map(parseInt) 结果是什么

1 NaN NaN

https://blog.csdn.net/weixin_44135121/article/details/88050214

 

18、var arr = [3,4,5];var res = arr.unshift(1,2);console.log(res)

5(unshift()方法是向数组的开头添加一个或多个元素,并且返回添加之后数组的长度,原数组有三个元素,添加了两个所以结果为5)

19、var one;

var two = null;

console.log(one == two,one === two);

True false(one定义了没有赋值所以one是undefined,undefined的布尔值是false,null的布尔值也是false,所以==;但是===是false,因为他们不属于同一数据类型,null的数据类型是object,undefined的数据类型就是undefined)

20、function fn(){ var a = b = 1; }

fn();

console.log(b);//结果为

console.log(a);//结果为

1 报错(这样定义a,b,a是局部变量,b是全局变量,所以在函数外面打印a找不到这个变量所以a会报错not defined ,b可以找到结果为1)

二、代码书写

1、不用for循环生成0-100的数组

var arr =[]
var n =100
while(n){
arr.unshift(n)
n-=1
}
console.log(arr);

2、let arr1=[1,2,3,4,5]; let arr2=[4,5,6,7,8]; 找出俩个数组的交集

let arr1=[1,2,3,4,5];
let arr2=[4,5,6,7,8];
var arr3 = []
for(var value of arr1){
    for(var value1 of arr2){
        if(value == value1){

            arr3.push(value)
        }
    }
}
console.log(arr3);

 

3、编写⼀个动物类,该类包含name的属性,和say的⽅法。 通过say⽅法可以打印动物说话了。编写⼀个Dog类继承动物类,要求 该类中包含颜⾊的属性,该类重写say⽅法,要求打印⽗类的say⽅法⾥的内容,并且打印 动物颜⾊+动物名字+“叫了”。(备注狗会一直叫)

class Animal{
    constructor(name){
        this.name=name
    }
    say(){
        console.log('动物说话了');
    }
}
class Dog extends Animal{
   constructor(name,color){
    super(name)
    this.color = color
   }
   say(){
    super.say()
    console.log(this.color+this.name+'叫了');
   }
}
var dog = new Dog('Judy','白色的')
dog.say()

4、现在有⽤户的⾓⾊有数组,如:[{id:1,name:’经理’},{id:2,name:’员⼯’}],⽤户已选择的数组[{id:2,name:’经理’}], 要求获取⽤户未 选中的⾓⾊列表,和⽤户已选择的⾓⾊的id数组。(使⽤es6语法实现)map、filter、some

var arr =[[{id:1,name:'经理'},{id:2,name:'员⼯'}]]
var selets =[[{id:2,name:'经理'}]]
// 遍历数组 selects
selets.map(v=>{
    return v.id
})//选中的id数组
Arr.filter(v=>{
    // 如果包含给你返回
    var isTrue =selects.sonme((val)=>{
        return val.id == v.id
    })
    return !isTrue
})//不包含的数组

 

标签:练习题,function,return,undefined,第三周,typeof,var,函数
From: https://www.cnblogs.com/lym-2022/p/16592807.html

相关文章

  • mysql基础练习题
    mysql基础练习题 test11、创建emp表,设计字段为id,name,age,sex,salary(工资),resume(履历),time(入职时间)。2、往表中添加数据如下:insertintoemp(name,age,sex,s......