1.定义变量的方式 let:
(1).没有变量提升(var具有变量提升 即在当前作用域的最上面定义这个变量 但不赋值)
例:console.log(x);var x = 20;---------显示undefined
console.log(m);let m = 100;-------报错
(2).let不可以重复声明
例:var x = 10;var x = 20;console.log(x);----显示20
let x = 10;let x = 20;console.log(x);----报错
(3).let 块级作用域内可用 (即花括号内 括号外不可用)
例:{let m = 100;}console.log(m);—报错
{var m = 100} console.log(m);–显示100
(4).let定义变量有块级作用域 SetTimeout函数分开执行
例: for (var i = 0; i < 5; i++) { //i=5 setTimeout(function () {console.log(i); }, 100);}-------------显示5个5
for (let i = 0; i < 5; i++) { //i=5 setTimeout(function () { console.log(i); }, 100); }-------------------------显示01234
(5).let暂时性死区(let定义的变量,在代码块内到定义let变量这一行位置,访问不到该变量)
例:function fn(){ console.log(a); let a = 20; } fn();---------------报错
function fn(){ console.log(a); var a = 20; } fn();---------------undefined
2.变量:
(1). 基本数据类型
(栈内存):string、number、boolean、null、undefined(
-
定义了未赋值
-
数组索引越界
-
访问对象没有属性
-
没有return 默认返回undefined)
(2). 引用数据类型
(堆内存):array object.
-
变量提升概念:使用var定义变量未赋值的情况 在当前作用域的最上边定义了这个变量,但是未赋值而let定义变量没有提升
-
const:引用数据类型的常量 地址 指针不能变
-
解构赋值
-
数组解构(使用[])
例:let arr = [1,2,3];
let a = arr[0];
let b = arr[1];
console.log(a,b);--------显示1,2 -
解构按属性对应
例:
let {name,age} = {name:‘zs’,age:‘18’};
console.log(name,age);--------显示zs 18 -
如果解构赋值取到undefined 使用默认值
例:
let {age:a,name,school=“北大”} = { name: ‘zs’, age: 18,school:“黑大” };
console.log(name,a,school);----显示zs 18 黑大 -
字符串也可以解构(使用[])
例:let str = “abcdefg”;
let [x,y,z] = str; console.log(x,y,z); -
-
concat()合并数组
…arr1,…arr2合并两个数组
4.类数组转成数组
let arr3=[…aLi]8.this
(1).this 触发谁的事件 this就是谁
(2).setTimeOut、setInterbal均指向window
(3).调用谁的方法,this就指向谁9.set类似于数组,但是成员的值都是唯一的,没有重复的值。函数接受数组或类数组作为参数。new Set();
- add(value):添加某个值,返回Set结构本身。
- delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
- has(value):返回一个布尔值,表示该值是否为Set的成员。
- clear():清除所有成员,没有返回值。
- 遍历:keys() entires() forEach() for...of
- 长度:.size()
5.AJAX
(1).是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。(异步处理:就是我们通过事件触发到 ajax,请求服务器,在这个期间无论服务器有没有响应,客户端的其他代码一样可以运行。 同步处理:我们通过实践触发 ajax,请求服务器,在这个期间等待服务器处理请求, 在这个期间客户端不能做任何处理。当 ajax 执行完毕才会继续执行其他代码。)
(2).创建对象:variable=new XMLHttpRequest();
(3).向服务器发出请求open(method,url,async)规定请求的类型、URL 以及是否异步处理请求。method:请求的类型;GET 或 POSTurl:文件在服务器上的位置async:true(异步)或 false(同步)send(string)将请求发送到服务器。string:仅用于 POST 请求例: xmlhttp.open(“GET”,“test1.txt”,true);
xmlhttp.send();
(4).服务器响应:responseText获得字符串形式的响应数据。responseXML获得 XML 形式的响应数据。1.responseText 属性如果来自服务器的响应并非 XML,请使用 responseText 属性。responseText 属性返回字符串形式的响应,因此您可以这样使用:document.getElementById(“myDiv”).innerHTML=xmlhttp.responseText;2.responseXML 属性如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性:请求 books.xml 文件,并解析响应:xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName(“ARTIST”);
for (i=0;i<x.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + “
”;
}
document.getElementById(“myDiv”).innerHTML=txt;(5).onreadystatechange 事件当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。readyState存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。0: 请求未初始化1: 服务器连接已建立2: 请求已接收3: 请求处理中4: 请求已完成,且响应已就绪status200: "OK"404: 未找到页面12.promise:异步编程解决方案,比传统的解决方案——回调函数和事件——更合理 和更强大。将异步请求以同步方式表达出来例:new Promise(function (resolve, reject) { setTimeout(function () { console.log(‘第一个请求成功1’) let data = 1; if (data) { resolve(1111); }else{ reject(); } }, 3000) }).then(function (val) { console.log(‘调用resolve成功’,val) }).catch(function(){ console.log(‘失败’) })-----------显示 第一个请求成功1 调用resolve成功 1111