第三周练习题
作者:互联网
一,代码识别,写出结果,并分析原因
-
- (function(){
return typeof arguments;
})();
- (function(){
-
console.log( typeof g())
报错 因为g只在函数体内才可见 命名的函数表达式
- (function(x){
-
delete x;
return x;
})(1);
1 因为x只能删除对象的属性
- var y = 1, x = y = typeof x;
log(x);
- var y = 1, x = y = typeof x;
-
Undefined 从右往左运算,一开始x没有声明,那么就是undefined
- (function f(f){ return typeof f(); })(function(){ return 1; });
-
自执行返回的是f(),所有指的是参数 所有结果是 number
- var foo = {
bar: function() { return this.baz; },
baz: 1
};
(function(){
return typeof arguments[0];
})(foo.bar);
- var foo = {
-
function
首先,这个foo对象定义有问题。作为方法,this指向的是调用者自身(这里是foo.bar),但是函数不存在baz这个属性,所以方法结果是undefined。
另一方面,和第四题类似,注意到arguments0就是一个函数自执行的结果,它已经从foo对象中剥离开来了,this指向arguments[0]
- var foo = {
bar: function(){ return this.baz; },
baz: 1
}
typeof (f = foo.bar)();//问最后一行的执行结果
- var foo = {
-
undefined
- var f = (function f(){ return “1”; }, function g(){ return 2; })();
typeof f; //问最后一行的执行结果
- var f = (function f(){ return “1”; }, function g(){ return 2; })();
-
number
- var x = 1;
if (function f(){}) {
x += typeof f;
} //x值为多少
- var x = 1;
-
1+undefined
注意:函数声明不允许写在if判断条件中 如果真的写了 全部返回真 因为只有0,空字符串,undefined,null,false才判断为假
- var x = [typeof x, typeof y][1];
typeof typeof x; //问最后一行的执行结果 string
- var x = [typeof x, typeof y][1];
-
遇到判断typeof判断typeof,肯定返回字符串
- (function(foo){
return typeof foo.bar;
})({ foo: { bar: 1 } });
- (function(foo){
-
Undefined
参数是一个对象 这个对象只有一个属性foo 所以结果是undefined
- (function f(){
function f(){ return 1; }
return f();
function f(){ return 2; }
})();
- (function f(){
-
2 首先要明确,函数声明是预解析的 在return之前 两句声明都被解析了所以返回2
- function f(){ return f; } new f() instanceof f;//问这一行的值
-
Instanceof返回的是一个布尔值 看他是不是构造函数的实例 false
- with (function(x, undefined){}) length; //问length的值为多少
//with就是一个读写器,题意是取出函数的length属性
- with (function(x, undefined){}) length; //问length的值为多少
-
2 这里是函数的长度 实际上是函数形参的长度
- log(a);
-
var a=1;
function a(){}
a=2;//a的结果是什么
1
- setTimeout(() => { console.log(1)},0);console.log(2)
-
2,1
- ['1','2','3'].map(parseInt)结果是什么
-
https://www.cnblogs.com/afeihome/p/7245963.html
[1,NaN,NaN]
- var arr = [3,4,5];var res = arr.unshift(1,2);console.log(res)
-
5
- var one;
-
var two = null;
console.log(one == two,one === two);
true false
One的变量的值是undefined,two的值是null,undefined==null,但undefined的type是undefined,但null的值是object,所以类型不相等,注意在js中 ,值有类型,变量没有类型。
- function fn(){
-
var a = b = 1;
//等于var a = b ,b = 1
//不加var ,b就是全局变量了(window.b=1),可以直接访问
//var a是局部变量,在fn里面,外面访问不到
}
fn();
console.log(b);//结果为//window全局作用域下找到window.b = 1
console.log(a);//结果为//a在fn里面的作用域,外面访问不了,报错
1 报
二,代码书写
- 不用for循环生成0-100的数组
// 第一种方法 // Array.apply(null,Array(100)) var arr = Array(100).fill(1).map((v,k)=>k+1) console.log(arr); // Array.from()方法 var filled = Array.from(Array(100),(v,k)=> k+1); console.log(filled); //第二种方法 var filled = new Array(100); filled.map(function(value,index){ return index+1 }); console.log(filled); //第三种方法 var arr = Object.keys(Array.apply(null,{ length:100 })).map(function(item){ return +item; }) console.log(arr); // 第四种方法 Array.keys() var arr = new Array(100).keys(); console.log(Array.from(arr)); // 第五种方法 Object.keys()与Array.from() var arr = Object.keys(Array.from({ length:100 })).map(function(item){ return +item }); console.log(arr); // 第六种 使用扩展运算符 var arr = [...Array(100).keys()]; console.log(arr); // 或者改写成 var arr = [...Array.from({ length:100 }).keys()]; console.log(arr); // String()方法 var arr = Object.keys(String(Array(101))); console.log(arr);
- let arr1=[1,2,3,4,5];let arr2=[4,5,6,7,8]; 找出俩个数组的交集
<script> let arr1=[1,2,3,4,5,6] let arr2=[4,5,6,7,8,9] // 并集 数组去重 let RemoveSame=[...new Set([...arr1,...arr2])] console.log(RemoveSame) //[1, 2, 3, 4, 5, 6, 7, 8, 9] //数组交集,或得两个数组重复的元素 let SamePart=arr1.filter(item=>arr2.includes(item)) console.log(SamePart) //[4, 5, 6] //差集=并集-交集 去除两个数组相同的元素 let Difference=RemoveSame.filter(item=>!SamePart.includes(item)) console.log(Difference) //[1, 2, 3, 7, 8, 9] </script>
- 编写⼀个动物类,该类包含name的属性,和say的⽅法。 通过say⽅法可以打印动物说话了。编写⼀个Dog类继承动物类,要求 该类中包含颜⾊的属性,该类重写say⽅法,要求打印⽗类的say⽅法⾥的内容,并且打印 动物颜⾊+动物名字+“叫了”。(备注狗会一直叫)
<script> 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 + "叫了") } } const dog = new Dog("毛毛", "金色") dog.say() </script>
- 、现在有⽤户的⾓⾊有数组,如:[{id:1,name:’经理’},{id:2,name:’员⼯’}],⽤户已选择的数组[{id:2,name:’经理’}], 要求获取⽤户未 选中的⾓⾊列表,和⽤户已选择的⾓⾊的id数组。(使⽤es6语法实现)map、filter、some
<script> const roleList = [{ id: 1, name: '老板' }, { id: 2, name: '经理' }]; // 用户已选择的数组 const selectedRoleList = [{ id: 2, name: '经理' }]; const unSelectedRoles = roleList.filter(item => !selectedRoleList.some(selectedItem => selectedItem.id == item.id)) console.log(unSelectedRoles); const selectedIds = selectedRoleList.map(item => item.id) console.log(selectedIds); </script>
标签:练习题,function,arr,console,log,第三周,var,return 来源: https://www.cnblogs.com/liu-2001/p/16596546.html