第一题:
// 声明变量a并赋值为10
var a=10;
// 声明函数foo
function foo(){
// 在函数内部打印变量a的值,此时变量a还未被赋值,输出undefined
console.log(a);
// 声明变量a并赋值为20
var a = 20;
}
// 调用函数foo
foo();
输出结果:
undefined
第二题:
//定义一个对象obj,包含属性a和b,分别赋值为1和2
var obj={a:1,b:2};
//将obj的原型设置为一个新对象,该对象包含属性c,赋值为3
Object.setPrototypeOf(obj,{c:3});
//定义obj的属性d,赋值为4,不可枚举
Object.defineProperty(obj,'d',{value:4,enumerable:false});
//遍历obj的所有可枚举属性,并输出属性名
for(let prop in obj){
console.log(prop);
}
输出结果:
a
b
c
第三题:
//定义一个空数组
var array=[];
//循环3次,将一个函数添加到数组中,该函数返回i的值
for(var i=0;i<3;i++){
array.push(()=>i);
}
//将数组中的每个元素都执行一遍,将结果存储在新数组中
var newArray = array.map(el=>el());
//输出新数组
console.log(newArray);
//定义一个空数组
var array=[];
//循环3次,将i的值添加到数组中
for(var i=0;i<3;i++){
array.push(i);
}
//输出数组
console.log(array);
输出结果:
[ 3, 3, 3 ]
[ 0, 1, 2 ]
第四题:
// 定义一个函数test,参数为person
function test(person) {
// 修改person对象的age属性为26
person.age=26
// 重新定义一个person对象,包含name和age属性
person={
name:'hzj',
age:'18'
}
// 返回新的person对象
return person
}
// 定义一个常量p1,包含name和age属性
const p1 ={
name:'fyq',
age:19
}
// 调用test函数,将p1作为参数传入,返回新的person对象并赋值给p2
const p2 = test(p1)
// 输出p1对象
console.log(p1)
// 输出p2对象
console.log(p2)
输出结果:
{name: "fyq", age: 26}
{name: "hzj", age: "18"}
第五题:
//定义变量number并赋值为50
var number=50
//定义对象obj,包含属性number和方法getNum
var obj={
//属性number的值为60
number:60,
//方法getNum返回对象的number属性值
getNum:function(){
//定义局部变量number并赋值为70
var number = 70
//返回对象的number属性值
return this.number
}
}
//输出obj.getNum()方法的返回值,即对象的number属性值60
console.log(obj.getNum())
//使用call方法调用obj.getNum()方法并传入undefined作为this值,输出对象的number属性值50
console.log(obj.getNum.call(undefined))
//使用call方法调用obj.getNum()方法并传入{number:20}作为this值,输出传入对象的number属性值20
console.log(obj.getNum.call({number:20}))
输出结果:
60
50
20
第六题:
//定义一个函数checkAge,参数为age
function checkAge(age){
//如果age小于18,定义一个常量message并赋值为'too young'
if(age<18){
const message='too young'
//否则,定义一个常量message并赋值为'too simple'
}else{
const message='too simple'
}
//返回message
return message
}
//在控制台输出checkAge(21)的结果
console.log(checkAge(21))
输出结果:
ReferenceError: message is not defined
第七题:
//定义一个数组arr,包含1到8的整数
var arr=[1,2,3,4,5,6,7,8]
//使用map方法对数组arr中的每个元素进行平方操作,再使用reduce方法将结果合并到一个数组中
arr = arr.map(function(x){
return x * x}).reduce(function (acc,x,i){
//将平方后的元素和它的下标依次加入到数组acc中
acc.push(x)
acc.push(i)
return acc
},[])
//使用filter方法筛选出数组中的奇数
.filter(function (x) {
return x % 2
})
//使用join方法将数组中的元素以逗号分隔的形式转换为字符串
.join(",")
//将结果输出到控制台
console.log(arr)
输出结果:
1,1,9,3,25,5,49,7
补充:
function Fun(){
var inVariable = "内部变量";
}
Fun();
console.log(inVariable);
输出结果:
inVariable is undefined
var a = 100;
function fun(){
var b = 200;
console.log(a);
console.log(b);
}
fun();
输出结果:
100
200
undefined
var a = 10;
function fun(){
console.log(a);
}
function show(f){
var a = 20;
(function(){
f();
})()
}
show(fun);
输出结果:
10
undefined
function func(){
const a = 1;
return function (){
console.log(a);
}
}
const f2 = func();
运行结果:
undefined
function foo(a){
console.log(a+b);
}
var b = 2;
foo(1);
运行结果:
3
undefined