1,js中有哪些数据类型?
简单数据类型:undefined null Boolean Number string
复杂数据类型(引用):object
2,说说你对this的理解?
this是一个关键字,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。
(1)作为纯粹的函数调用this指向全局对象(js在浏览器中的全局对象是window对象)
(2)作为对象的方法调用this指向调用对象
(3)作为构造函数被调用this指向新的对象(new会改变this的指向)
(4)apply调用this指向apply方法的第一个参数
3,什么是闭包?
简单的说,作用域是针对变量的,比如我们创建一个函数a1,函数里面又包了一个子函数a2,此时就存在三个作用域。
全局作用域,a1作用域,a2作用域;即全局作用域包含了a1的作用域,a2的作用域包含了a1的作用域。
当a1在查找变量的时候会先从自身的作用域查找,找不到再到上一级a2的作用域查找,如果还没找到就到全局作用域区查找,这样就形成了一个作用域链。
理解闭包首先要理解,js垃圾回收机制,也就是当一个函数被执行完后,其作用域会被收回,如果形成了闭包,执行完后其作用域就不会被收回。
如果某个函数被他的父函数之外的一个变量引用,就会形成闭包。
闭包的作用,就是保存自己私有的变量,通过提供的接口(方法)给外部使用,但外部不能直接访问该变量。
4,js中数组方法?
常用14种
(1)增删改
增 push(尾部) unshift(头部)
删 pop (尾部) shift(头部)
改 splice(替换数组)
(2)查 (都是返回找到的第一个的位置)
indexof(从前到后找) lastIndexof(从后到前找)
(3)截取,拼接
slice(start【,end】) concat
(4)数组转字符串
toString() join()
(5)翻转 排序
Reverse () sort()
(6)遍历
forEach() map()//对元素重新组装,生成新数组。
Every() //所有都符合
some() //至少一个符合
filter() //过滤
5,字符串方法?
(1)charAt() 获取字符串的第n位
(2)charCodeAt(index) // 返回指定位置的字符的Unicode编码
(3)lastIndexof //返回某个指定的字符串值在字符串中最后出现的位置(从右往左查找)
(4)Indexof(str) //返回某个指定的字符串值在字符串中首次出现的位置(从左往右查找)
(5)slice(start,end) //end小于start不会执行
//负数,从右往左开始,第一位是-1
(6)Substr(start,length)
(7)SubString(start,end) //会自己判断两个参数大小
(8)toLowerCase (转小写)
(9)toUpperCase(转大写)
(10)trim() //去掉首尾空格
(11)Repeat(n) //字符串重复几遍
(12)split() //根据字符串分割成数组
str.split('').reverse().join('');//字符串翻转
(13)concat 连接字符串