1、数据类型
- 基本数据类型:null、undefinde、boolean、string、number、symbol(ES6新增)
- 引用数据类型:Function、Array、Object、Map和Set(ES6新增)
2、let、var和const的区别
- var定义的变量,是全局作用域或函数作用域,存在变量提升
- let定义的变量,只能在块作用域里访问,不存在变量提升
- const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改,不存在变量提升
注意:变量提升指js引擎在正式执行代码前会进行一次预编译,会把var所定义的变量以及函数当前作用域的顶部声明
3、GET和POST的区别
- get请求是获取数据的,而post请求是提交数据的
- get请求对数据长度的限制;当发送数据时,GET 方法向 URL 添加数据get请求的传送数据会拼接在url后面
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息
- GET参数通过URL传递,POST放在Request body中
4、跨域
- 域名、协议、端口号三者有一个不同的话就属于跨域行为
5、== 和 === 的区别
- === 比较类型和值,==只比较值。
- js在比较的时候如果是 == 会先做类型转换,再判断值是否相等
6、闭包的作用
- 闭包是有权限访问其他函数作用域的局部变量的一个函数
- 最大的用处两个:一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中
- 闭包随处可见,一个 Ajax 请求的成功回调,一个事件绑定的回调方法,一个 setTimeout 的延时回调,或者一个函数内部返回另一个匿名函数,这些都是闭包
- 简而言之,无论使用何种方式对函数类型的值进行传递,当函数在别处被调用时,都有闭包的身影
7、JavaScript的严格模式是什么
- 严格模式是为JavaScript定义了一种不同的解析与执行模型,它会以更严格的条件去检查你的代码错误,它可以全局使用,也可以局部使用(应用到函数内部)
主要用于以下几个目的
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的Javascript做好铺垫。
8、null、undefined和NaN有什么区别
- undefined和null为基本数据类型,NaN表示Not A Number,用typeof检测时,undefined返回undefined,null返回object,NaN返回number。
- undefined表示未定义,通常出现在声明了变量而未赋值时
- null表示变量值为空,可以通过将null赋给变量来清空变量。
- NaN值出现情况更多,比如数据类型转换时,被转换的数据不含有可以转换的部分,则返回NaN
- 需要注意的是,NaN和任何数据都不相等,包括NaN本身,其他数据类型和NaN运算的结果都是NaN;null==undefined会返回true,null === undefined会返回false
9、函数和事件的使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<p>请点击其中的一个按钮,来调用带参数的函数。</p>
<button onclick="myFunction('Harry Potter','Wizard')">点击这里</button>
<button onclick="myFunction('Bob','Builder')">点击这里</button>
<script>
function myFunction(name,job)
{
alert("Welcome " + name + ", the " + job);
}
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<p>本例调用的函数会执行一个计算,然后返回结果:</p>
<p id="demo"></p>
<script>
function myFunction(a,b){
return a*b;
}
document.getElementById("demo").innerHTML=myFunction(4,3);
</script>
</body>
</html>
10、什么是AJAX
- AJAX = 异步 JavaScript 和 XML。
- AJAX 是一种用于创建快速动态网页的技术。
- 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
//一个ajax实例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest) //XMLHttpRequest 用于在后台与服务器交换数据
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText; //如果来自服务器的响应并非 XML,请使用 responseText 属性。
//如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性:
}
}
xmlhttp.open("GET","/try/ajax/ajax_info.txt",true); //规定请求的类型、URL 以及是否异步处理请求。
xmlhttp.send(); //将请求发送到服务器。
}
</script>
</head>
<body>
<div id="myDiv"><h2>使用 AJAX 修改该文本内容</h2></div>
<button type="button" onclick="loadXMLDoc()">修改内容</button>
</body>
</html>