每天前端题整理-3

84 阅读2分钟

「这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战

1.下面代码的执行结果
var fn = function a(){
    a = 1;
    console.log(typeof a)
}
fn();//function
console.log(typeof a)//undefined

答案:function undefined

解析:关于有名函数表达式需要注意2点:

(1)有名函数表达式的函数名(a)在函数体内还代表一个函数

(2)在函数体外部是会自动忽略函数的名称,即函数体外面是不能访问到(a)

(3)在函数体内部,函数名(a)不能再被修改

2.下面代码的执行结果是
function fn(xx){
    this.x = xx
    return this
}
var x = fn(5)
var y = fn(10)
console.log(x.x)
console.log(y.x)

答案:undefined 10

解析:在fn(5)执行完,window.x === window;在fn(10)执行的时候,window.x = 10,window.y === window;

因此x.x其实就是new Number(10).x,所以打印出undefined,y.x其实就是window.x ,所以打印出10

3.下面代码的执行结果是什么?
function show(){
    "use strict";
    // name = "alice";
    age = 12;
    // console.log(`${name}今年${age}岁了`)
}
show()

答案:严格模式下,变量必须声明后再赋值,否则ReferenceError

解析:经过测试发现,如果严格模式下变量没声明就赋值为字符串,居然不报错。暂时待进一步验证

4.数组中的push pop unshift shift分别有什么用途?

push方法:给数组末尾添加一位或多位,返回变化后的数组长度

pop方法 :给数组末尾移除一位,返回移除的元素

unshift :给数组前面添加一位或者多位,返回变化后的数组长度

shift :移除数组最前位,返回移除的元素

注意:以上方法都会改变原始数组

5.下面代码的执行结果是什么?

**

let a = 1;
a = (++a, a++);
console.log(a);
a = (a++, ++a);
console.log(a);

答案:2 4

解析:考查++运算符和逗号运算符。

++在前就先++在执行该语句,++在后就先执行完该语句在++

逗号运算符,会返回逗号后面的结果,当然前面的语句也会执行

6.js中定义函数的几种方式:

(1) 函数声明

function fn1(){}

(2)函数表达式

let fn2 = function(){}

(3)通过Function构造函数

let fn3 = new Function('a','b','return a+ b')

Function最后一个参数表示函数体,其余参数作为形参