「这是我参与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最后一个参数表示函数体,其余参数作为形参