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事件代理
-
$('ul').on('click','li',function(e){
-
console.log(e.target);
-
this.remove();
-
})
闭包是什么,有什么特性,对页面有什么影响。
闭包就是能够读取其他函数内部变量的函数
闭包的缺点:会造成内存泄露,因为闭包中引用到的包裹函数中定义的变量都永远不会被释放,所以我们应该在必要的时候,及时释放这个闭包函数
如何阻止事情冒泡 和 默认事件
e.stopPropagation() 阻止事件冒泡
e.preventDefault() 阻止默认事件
document load 和document ready的区别
Document.onload 是在结构和样式加载完才执行js
window.onload:不仅仅要在结构和样式加载完,还要执行完所有的样式、图片这些资源文件,全部加载完才会触发window.onload事件
Document.ready原生种没有这个方法,jquery中有 $().ready(function)
编写一个数组去重的方法
一个比较简单的实现就是:
- 先创建一个空数组,用来保存最终的结果
- 循环原数组中的每个元素
- 再对每个元素进行二次循环,判断是否有与之相同的元素,如果没有,将把这个元素放到新数组中
- 返回这个新数组
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
基本特点
- 是一种解释性脚本语言(代码不进行预编译)。
- 主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
- 可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
- 跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、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 |
引用数据类型(存放在堆内存中的对象,每个空间大小不一样,要根据情况进行特定的配置)
引用类型是存放在堆内存中的对象,变量其实是保存的在栈内存中的一个指针(保存的是堆内存中的引用地址),这个指针指向堆内存。
引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存中堆内存中的对象