前端实习生面试题

1,js的基础数据类型。

简单数据类型(基础数据类型):undefined,null,boolean,number,string

复杂数据类型:object,object本质上是由一组无序的键值对组成的。

其中undefined,null,boolean,number为基本类型,object,array,function属于引用类型。

2,js的undefined与null

undefined类型只有一个值,在使用var声明变量但未对其加以初始化时,这个变量的值是undefined。

3,js显式类型转换,隐式类型转换

显式转换:转型函数 Boolean(),Number(),parseInt(),parseFloat(),.toString(), String(),

隐式转换:a,递增和递减操作符 b,一元加和减操作符 c,逻辑非操作符 与 比较操作符将任意值转换为布尔值  c,关系比较操作符

参考文章

4,js函数传参形式(值传递or引用传递)

在ECMAScript中所有的函数的参数都是按值传递的。就是把函数外部的值复制给函数 内部的参数,就是把值从一个变量复制到另一个变量一样。基本数据类型的值传递如同基本类型变量的复制一样,而引用类型值得传递,则如同引用类型变量的复制一样。

基本类型值

function add(num){
    num += 10;
    return num;
}
var count = 20;
var result = add(count);
console.log(result); // 30
console.log(count); // 20 ,没有变化

引用类型值

function setName(obj){
    obj.name = '嘉明';
    obj = new Object();
    obj.name = '庞嘉明';
}
var person = new Object();
setName(person);
console.log(person.name); // '嘉明'

 ̄□ ̄||这个我目前还理解不够,关于js的参数传递

------------2020-6-1 补充-------------

js函数传参形式:值传递

5,js闭包

闭包是指有权访问另一个函数作用域中的变量的函数。导致另一个函数内的变量延长生存时间,造成常驻内存。

6,js单线程还是多线程

JavaScript语言的特点是单线程,JavaScript的主要用途是与用户交互,以及操作DOM。这样单线程会避免很多复杂的同步问题。假如有两个线程,一个线程在DOM节点上添加内容,另一个线程删除这个节点,这是浏览器应该以哪个线程为准?为了利用多核CPU的计算能力,HTML5提出web worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程的控制,且不得操作DOM。所以,并没有改变JavaScript单线程的本质。

7,js垃圾回收机制

a,标记清除。当变量进入执行环境时,就标记这个变量为‘进入环境’。从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,就可能会用到他们。当变量离开环境时,则将其标记为‘离开环境’。

垃圾收集器在运行的时候会给存储在内存上的所有变量都加上标记。然后,它会去掉环境中的变量以及被环境中的变量引用的标记。而在此后在被加上标记的变量将被视为准备删除的变。最后,垃圾收集器完成内存清除工作,销毁那些带标记的值,并回收他们所占用的内存空间。

b,引用计数

跟踪记录每个值被引用的次数,当这个值的引用次数变成0时,说明没有办法再访问这个值,就将其占用的内存空间收回来,下次再运行垃圾收集器的时候,就会释放那些引用次数为0的值所占用的内存了。

参考

8,Promise执行顺序问题

古人云‘君子一诺千金’,‘承诺将来会执行’

参考文章

9,js中apply,call,bind的区别

相同点:a,在js中,这三者都是用来改变函数的this对象的指向的。b,第一个参数都是this要指向的对象。b,都可以利用后续参数传参。

不同点:参数接收方式不同,apply可接收数组。

  • 13
    点赞
  • 156
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值