几道JavaScript控制台打印问题

第一题:

// 声明变量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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值