简单测试-JavaScript到底学的好不好(初级)-简答
学完了初级阶段的JavaScript语法,即ES基本语法阶段,可以利用以下简答题测试一下自己知识掌握的程度,查漏补缺!学完了初级阶段的JavaScript语法,即ES基本语法阶段,可以利用以下简答题测试一下自己知识掌握的程度,查漏补缺!
1、以下代码的输出结果
setTimeout(function(){console.log(4)},0);
new Promise(function(resolve){
console.log(1)
for( var i=0 ; i<10000 ; i++ ){
i==9999 && resolve()
}
console.log(2)
}).then(function(){
console.log(5)
});
console.log(3);
分析
//首先执行脚本的同步任务
//添加异步宏任务到异步队列
//打印1
//执行for循环,循环10000次后将promise的then函数添加到本轮异步微任务队列,但不执行
//打印2
//打印3
//执行本轮异步微任务,打印5
//执行下一轮宏任务,打印4
//最后结果 1,2,3,5,4
2、以下代码的输出结果
function Foo() {
getName = function() {
console.log(1)
}
return this;
}
Foo.getName = function() {
console.log(2)
}
Foo.prototype.getName = function() {
console.log(3)
}
var getName = function() {
console.log(4)
}
function getName() {
console.log(5)
}
(1)getName() 输出 ??
首先变量提升var getName=undefined
再函数提升Foo:函数堆地址,getName:赋值{console.log(5)}
Foo.getName:为Foo添加成员
Foo.prototype.getName为函数的原型添加成员getName,以后用Foo创建的对象的原型链上就有getName方法
getName = function() { console.log(4)}赋值
//所以输出4
(2)Foo().getName() 输出 ??
执行Foo函数,全局getName变为{console.log(1)},返回this-window
再调用window.getName()
//打印1
(3)new Foo.getName() 输出 ??
根据优先级函数带参=成员访问,执行顺序从左到右,即new (Foo.getName)()
//打印2
(4)new Foo().getName() 输出 ??
即(new Foo()).getName()
执行Foo函数,创建一个对象,调用这个对象的getName方法,没有查到,则在原型上找
所以打印3
(5)new new Foo().getName() 输出 ??
即new (( new Foo()).getName)()
//创建对象,返回对象,在对象的原型对象上找到getName方法,
所以打印3
3、使用至少2 种方法实现数组去重var num = [2,3,4,4,6,7,8,4,9,7]。
第一种:
var num=[2,3,4,4,6,7,8,4,9,7];
var newarr=Array.from(new Set(num));
console.log(newarr);
第二种:
var num=[2,3,4,4,6,7,8,4,9,7];
var newarr=[];
for(var i=0;i<num.length;i++){
if(newarr.indexOf(num[i])==-1){
newarr.push(num[i]);
}
}
console.log(newarr)
4、箭头函数与普通函数(function)区别是什么?
首先箭头函数的写法比普通函数简单:(参数)=>{执行体}
箭头函数的this是嵌套着这个箭头函数的函数的调用者
箭头函数的arguments没有绑定,所以接收形参时可以用...直接接收
箭头函数的call,bind方法都无法为它指定this
5、求一个字符串的字节长度?
假设:一个英文字符占用一个字节,一个中文字符占用两个字节假设:一个英文字符占用一个字节,一个中文字符占用两个字节
var reg1=/[a-z]/ig
var reg2=/[\u4E00-\u9FFF]/ig //中文的字符范围
var str=”adfe中安尔碘”
var arr1=str.match(reg1)
var arr2=str.match(reg2)
console.log(arr1.length+arr2.length*2)
6、JS 的基本数据类型和引用数据类型?区别是?
JS的基本数据类型:number,Boolean,undefined,null,string,symbol
JS的引用数据类型:object,function,
他们的区别是:基本数据类型直接存储的是值,直接存在栈中;而引用数据类型在栈中存储的是数据的地址,,该地址指向该数据的存储堆里面
7、new操作符具体干了什么?
首先创建一个对象,该对象为构造函数的prototype属性,
创建this,this指向这个对象,
然后执行构造函数的函数体,为这个对象添加成员
8、某地区手机号默认为9位数(xxxxxxxxxx),第二位必须是6/8/9中的一个,手机号最前面可加0也可不加(0xxxxxxxxxx),请据此写出验证手机号是否有效的JS 代码。
var reg=/^[0]?[\d][689]\d{7}$/
var num="0282389048"
console.log(reg.test(num))
答案仅供参考,发现错误可评论指正
分类:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构