是笔记呀

102 阅读3分钟

js

7种数据类型

初始数据类型(基本类型)

1.数值(字符串)

2.字符串

3.布尔值

4.undefined

5.null

6.symbol(es2015新增)

引用类型

对象 (不同的表现形式 {} new object() [] new array() new set() new map() function() {} new function() ......)

浅拷贝 object.assign()----方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 递归 深拷贝-----json.stringify()转变成json格式的字符串 -----json.parse()把字符串转换成json格式的对象----如果有undefined就会自动过滤,可以使用递归

区别

1.初始类型在内存存储时存储在栈区中 (存储的数据量比较小而且一般长度固定)

引用类型是存储在堆区中(存储数据量比较大的数据,长度不固定)

2.初始类型在进行赋值时做的是传值(值的拷贝)

引用类型在进行赋值时做的是传址(在堆区当中的引用地址的拷贝)

typeof 获取某个未知变量的数据类型

1.数值 =》 “number”

2.字符串=》 “string”

3.布尔值 =》 “Boolean”

4.undefined =》 “undefined”

5.null=》 “object”

6.symbol=》 “symbol”

7.object=》 “object”

8.function=》“function”

模拟函数重载

1.在一些强类型语言,函数会根据参数的个数和类型的不同,分别执行不同的函数体

在js中可以借助于arguments对象实现重载的效果,所以js中实现的是模拟重载函数

ECMAScript2015 之前ES6

在哪里定义变量的或者函数就拥有什么样的作用域

在全局环境(所有代码执行的环境)下定义的函数和变量就拥有全局的作用域在局部环境(函数内部)下定义的函数和变量就拥有当前局部的作用域

在函数外部定义的变量或者函数就可以在函数内外部都被访问到在函数内部定义的变量或者函数就只能在当前函数内部被访问到

ES6新增块级作用域

{} if(){} for(){} while(){} 在所有表示代码块的花括号中用let声明的变量或者用const声明的常量作用域就只在当前的代码块中

箭头函数 ES6 匿名函数的简写方式

let arr=[1,2,3,4,5];

let newarr.map(function(v,i){

return v*v;

});

let newarr=arr.map(v=>v*v);

console.log(newarr);

function(v)freturn vvJV=>VV

function(a,breturna+b-(a,b)=a+b;

function( )( return , Math. random( ) ( )=>Math. random( )

function(v)[console. log(v);return , vv;] v=>[console. log(v);return , vV];

function(b)[ return name:b] f-b=> (fname:b])

var和let的区别

let 是es6新增的声明方式 是能够识别块级作用域的 是不能重复声明变量的 是没有变量提升的 声明的全局变量不会变成window对象的属性

this的指向

一定是在当前函数被调用的时候才能确定 ,

一般情况下,函数被谁调用,this就指向谁

哪个元素添加的事件 ,this就指向当前元素

this指向实例化得到的对象

如果用call,apply调用函数,this指向的就是当前传入的值

事件 方法 构造函数 普通函数

map有两个参数 map中的函数有三个参数(ele,index,arr)

数组对象

ES3

push() pop() shift() unshift() splice() join() slice() concat() sort()

ES5

foeEach(callback) filter() map() some() every() indexOf() lastIndexOf() reserve() reduce() reduceRight()

ES6

find(callback) findIndex() fill() copyWithin() includes()

\