JS

Java 部分需要掌握的知识点:

1. typeof

变量的数据类型可以使用 typeof 操作符来查看:

typeof John                // 返回 string
typeof 3.14                  // 返回 number
typeof false                 // 返回 boolean
typeof [1,2,3,4]             // 返回 object
typeof {name:'John', age:34} // 返回 object

  • typeof 一个没有值的变量会返回 undefined

 

  • 任何变量都可以通过设置值为 undefined 来清空。 类型为 undefined.
  • 在 JavaScript 中 null 表示 什么都没有。
  • null是一个只有一个值的特殊类型。表示一个空对象引用。

null 和 undefined 的值相等,但类型不等:

typeof undefined             // undefined
typeof null                  // object
null === undefined           // false
null == undefined            // true    

2. ===和==

===:绝对等于(值和类型都相等)

3. let/const

 

4. function

function myFunction(a, b) {     return a * b; }
const x = (x, y) => { return x * y };
function myFunction(x, y = 10) {     // y is 10 if not passed or undefined     return x + y; }   myFunction(0, 2) // 输出 2 myFunction(5); // 输出 15, y 参数的默认值

JavaScript 闭包

还记得函数自我调用吗?该函数会做什么?

var add = (function () {     var counter = 0;     return function () {return counter += 1;} })();   add(); add(); add();   // 计数器为 3

 

 

5. array

let myCars=[Saab,Volvo,BMW];

push(末尾添加新的元素)

pop (删除数组的最后一个元素)

map(

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

fill() 方法用于将一个固定值替换数组的元素

xs=Array(100).fill(100).map((x,i) =>i+1);(列出了1-100)

 

 

6. foreach/reduce

for (const x of xs){

  sum+=x;

}

xs.forEach(x => {sum = sum+x;})

sum = xs.reduce((partialSum,x)=>partisalSum +x) //reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

7.filter

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。

const events = xs.filter(n=>n%2 ===0)

返回的都是偶数的

 

8.object

定义 JavaScript 对象可以跨越多行,空格跟换行不是必须的:

 

 

 

 

 

 

 

 这个就是上面提到的闭包吧

 9.计数

 

 

 

10.JavaScript in the browser 

 

 

API

navigator.geolocation;

navigator.deviceMemory;

window.innterWidth;

window.innerHeight;

document.body;

document.images;

document.cookie;

Node

  • Document
  • Element
  • DocumentFragment

 

11.Asynchronous JS

 

 

Promises 

let p = <make a promise object which runs immediately>

function resolved(v) {use result}

function rejected(e) {handle error}

p.then(resoved).catch(rejected);

 

let p = new Promise((resolve,reject)=> {     setTimeout(() => resolve('line 2 running'), 2000); }) p.then(console.log); console.log(main thread has reached line 7)
function flow(flag){        //promise是一个构造函数,内部接收一个回调函数。        //回调函数内部有两个参数,reslove是执行成功的时候调用的,reject是失败调用的        var promise = new Promise(function(reslove,reject){           setTimeout(function(){//模拟异步操作                if(flag){                  reslove(true);//处理成功                }else{                  reject(false)处理失败                }           },5000)        });        return promise;    }    //flow返回的是一个Promise对象,这样我们就能通过下面的方式来的处理异步操作了。    //调用该函数    flow().then(function(success){         }).catch(function(error){         //处理失败返回    });

Fetch

 

 

 

 

 

插入

<script src=xxx></script>