js面试题

JavaScript的typeof返回的那些数据类型

object number function boolean undefind string symbol bigint

例举三种强制类型转换 和 二种隐式类型转换

强制(Numaber,parseInt,parseFoat)

隐式(js运算符除了‘-’ )

split()和join()的区别

split切割成数组的形式join数组转换成字符串

javaScript this 指针,闭包,作用域

this指向调用上下文

闭包: 内层作用域可以访问外部作用域的变量

作用域 定义一个函数就开辟了一个作用域,整个js执行环境有一个全局作用域

事件委托是什么

符合W3C标准的事件绑定 addEventLisntener/attachEvent 让利用事件冒泡的原来。让自己触发的事件,让他的父元素执行

jq事件代理

  1. $('ul').on('click','li',function(e){

  2. console.log(e.target);

  3. this.remove();

  4. })

 闭包是什么,有什么特性,对页面有什么影响。

闭包就是能够读取其他函数内部变量的函数

闭包的缺点:会造成内存泄露,因为闭包中引用到的包裹函数中定义的变量都永远不会被释放,所以我们应该在必要的时候,及时释放这个闭包函数

如何阻止事情冒泡 和 默认事件 

e.stopPropagation() 阻止事件冒泡

e.preventDefault() 阻止默认事件

document load 和document ready的区别

Document.onload 是在结构和样式加载完才执行js

window.onload:不仅仅要在结构和样式加载完,还要执行完所有的样式、图片这些资源文件,全部加载完才会触发window.onload事件

Document.ready原生种没有这个方法,jquery中有 $().ready(function)

编写一个数组去重的方法

一个比较简单的实现就是:

  1. 先创建一个空数组,用来保存最终的结果
  2. 循环原数组中的每个元素
  3. 再对每个元素进行二次循环,判断是否有与之相同的元素,如果没有,将把这个元素放到新数组中
  4. 返回这个新数组

    function oSort(arr) {
        var result ={};
        var newArr=[];
          for(var i=0;i<arr.length;i++){
                if(!result[arr]) {
                    newArr.push(arr)
                    result[arr]=1
               }
           }
               return newArr
   }</arr.length;i++)

利用ES6中的Map方法去重 利用数组的filter方法去重 使用双重for循环,再利用数组的splice方法去重(ES5常用) 利用ES6中的 Set 方法去重

JavaScript是什么语言,它有那些特点

JavaScript是一种直译式脚本语言,是一种动态类型,弱类型,基于原型的语言,内置支持类型。它的解释被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言。最早在html网页上使用,来给html网页增加动态功能,JavaScript兼容豫ECMA标准,,因此也称为ECMAScript

基本特点 

  1. 是一种解释性脚本语言(代码不进行预编译)。
  2. 主要用来向HTML标准通用标记语言下的一个应用)页面添加交互行为。
  3. 可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离
  4. 跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如WindowsLinux、Mac、Android、iOS等)。 

引用类型的数据用=赋值的时候指向的是同一个地址值也就是说指向的是同一个东西官方叫做栈吧好像

数组排序

使用sort的方法

看以下代码输出为何?解释原因

var a;

alert( typeof a ); //'undefind'

b = 10 

alert( typeof b );//'number'

解释 一个变量定义了没有赋值 类型会为undefind 

一个变量没有声明被赋值会有类型 值也会是定义的值

看以下代码输出为何?解释原因

undefind == null  //true 

false == 0 //true

true == 1 //true

0 == ' ' //true

NaN ==NaN //false

[] == false //true 

[] == ![] //true

undefind 与null 相等 但是不恒等 ( ===)

一个是number 和 string 和尝试将string抓换成number 

尝试将boolean 转换成number ( false = 0 true = 1)

看代码给答案。

 

 

 

 

 

var a = new Object();

a.value = 1;

b = a; {value:1}

b.value = 2;

alert(a.value);//2

 

引用数据类型(存放在堆内存中的对象,每个空间大小不一样,要根据情况进行特定的配置)

引用类型是存放在堆内存中的对象,变量其实是保存的在栈内存中的一个指针(保存的是堆内存中的引用地址),这个指针指向堆内存。

引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存中堆内存中的对象

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值