首页 > 其他分享 >js学习笔记

js学习笔记

时间:2023-03-30 16:15:16浏览次数:28  
标签:返回 函数 指向 对象 元素 笔记 js 学习 数组

Js语法基础

==  >= <=  -  默认把字符型隐式转换为数值型

+ 为字符拼接

逻辑短路: (与运算):表达式1结果为真,返回表达式2

表达式1为假,返回表达式1

(或运算):表达式1为真,返回表达式1

表达式1为假,返回表达式2

返回能决定结果的表达式或者值

0 “ ”null undefined NaN 结果为false

运算符优先级:()

++ -- !

* / % + -

> >= < <=

== != === !==

&& ||

=

,

Switch 匹配是全等 不加break,接着执行下面case语句

适用于条件判断有具体值;if else适用于范围判断

 

For双重循环 外层循环一次,里面执行全部。

 

访问不存在的数组元素返回undefined

新增元素:1.改变数组长度,空元素的值也是undefined

  1. 追加新索引。

 

 

实参多于新参不报错。,没有实参的形参为undefined

Return只返回一个值(最后一个),没有return函数返回undefined

Arguments是函数的内置对象,存储了所有的实参,是伪数组,有length,有索引

 

函数内部没有声明,直接赋值的为全局变量

全局变量浏览器关闭时才销毁,局部变量在代码块结束时销毁

 

预解析,变量提升,函数和变量都先提升到当前作用域,

Var a=b=c=1; 等同于 var a=1; b=1;c=1;  b,c没有用var声明,在函数内部属于全局变量

 

构造函数:把对象的公共属性和方法封装到一起

名字首字母大写,不用return就可以返回结果,调用用new,即创建一个新对象

 

对象属性调用,obj.name  obj[“name”],方法为匿名函数,即function(){}

 

New关键字执行过程:1.在内存中创建一个空对象

2.this指向这个新对象

3.执行构造函数中的代码,给对象添加属性和方法

4.返回新对象

for(var key in obj){

key ---属性名  name

obj【key】 ---属性值  小明

}

 

内置对象:Math.random()直接使用

Var date=New Date(),先实例化,date.getfullyear()再使用

得到的月份要加1

数字前加0:三元表达式  seconds = seconds < 10 ? “0”+seconds : seconds

时间戳 +new Date() ,1970到当前的总毫秒数

倒计时:求截止时期和当前的时间戳  截止时间-当前时间

 

New Array(2,3)等同于 【2,3】

判断是否为数组 Array.isArray()    a instanof Array

Push()返回新数组长度            均改变原数组

Unshift()也返回新数组长度  (在数组开头添加)

Pop()删除最后一个元素,返回被删除的元素

Shift()删除第一个元素

Splice(index,many) 删除元素,返回被删除的元素   splice(index,many,新元素)

Sort(())排序

Reverse()翻转数组

indexOf()返回数组元素索引,无则返回-1

toString()转为字符串,用,分隔  join()可以指定连接符

Concat()连接数组,浅拷贝

Slice(index,many) 返回被剪切出来的数组

 

字符串不可变性,改变值,只是改变地址

Str.indexOf()可传入两个参数,第2个为起始的查找索引位置

Str.substr(0,3) 索引,长度   截取字符串

Replace(原字符,替换字符),只能替换满足条件的第一个字符串

Split(连接符)字符串转数组

charAt(索引)

Slice(start,end)索引end取不到,截取字符串

 

简单数据类型存放在栈中,存放的是值

复杂数据类型在栈中存放地址,地址指向堆,堆中存放数据

 

BOM

Document.GetElementById()无则返回null

QurraySelect()返回选择器的第一个元素对象

 

Tab栏切换,排他思想:先干掉所有人,留下我自己

 

设置自定义属性 setAttribute(“属性”,“值”)  data-开头

 

Children「0」第一个元素子节点。

ParentNode 父节点

创建节点-添加节点   createElement(“li”)- ul.appendChild(“li”)

Ul.insertBefore(lili,ul.children[0])创建最前面的子节点

RemoveChild(“”)删除某个子节点

Href=”javaScript:;”阻止跳转

Node.cloneNode()浅拷贝,只复制节点

Node.cloneNode(ture)深拷贝,节点里面的内容一起复制

Document.write()文档流执行完毕,页面重绘。添加新内容

InnerHTML创建多个元素效率更高(不拼接字符串,使用数组形式拼接 arr.join(),j结构复杂)

CreateElement()创建多个元素效率稍低,但结构清晰

动态生成表格

 

 

 

 

Element.addEventListener(“click”,function(){},ture)绑定事件ture为捕获阶段 ,默认false,冒泡阶段

删除事件:  element.onclick=null     removeEventListener(“click”,fn)

 

Dom事件流:捕获阶段-冒泡阶段

onclick=function(event){} 事件对象:event

e.target 返回点击的元素 ,this返回判定事件的元素

e.preventDefalut() 阻止默认行为事件

e.stopPropagation()阻止事件冒泡

e.pageX返回鼠标再页面的坐标

 

事件委托:不是每个子节点单独设置事件监听器,而是事件监听器设置在父节点,利用冒泡原理影响设置每个子节点。(例:设置ul ,点击li冒泡到ul的事件)

 

 

 

Keypress 不识别功能键

 

BOM

Onload 页面加载完

Onresize 窗口变化

setTimeout(function(){},1000)1秒后执行函数,定时器

clearTimeout(timeoutID)清除定时器

回调函数callback():需要等待时间再执行的函数。定时器,onclick等,实现异步。

回调函数原理:函数可以作为一个参数,将这个函数作为参数传到另外一个函数,当函数执行完,再执行回调函数。

setInterval(fn,间隔的毫秒数)重复执行。

 

This指向:一般指向调用它的

  1. 全局作用域或者普通函数,定时器,指向windows。
  2. 构造函数中this指向实例对象,new调用

 

同步:单线程

异步:同时进行多个任务

JS执行机制:先执行栈中同步任务,再将异步任务(回调函数)放入队列,执行完同步任务,再将异步任务返回执行栈中执行。

事件循环:主线程不断重复获取任务再执行。

 

Location对象:获取当前页面的url      

location.href  location.search返回参数

location.assign()跳转页面

 

Navigator对象:浏览器信息

 

OffsetTop 得到元素的偏移量,返回不带单位的数值,以带有定位的父亲为准,否则以body。

Offsetwidth 得到元素的宽度,包含padding和border

Offset只读属性

Curson:move 鼠标图形十字键

页面被卷去头部:window.pageYOffse获得,元素被卷去头部是element.scrollTop

Mouseover 经过自身盒子会触发,经过子盒子还会触发,mouseenter只会经过自身盒子触发,不会冒泡

 

滚动窗口至文档的某位置  window.scroll(x,y)  x,y不跟单位。

移动端触屏事件:touchstart 触摸, touchmove滑动 touchend 移开

 

Ajax  网页和服务器之间的数据交互   无刷新获取数据

Url 统一资源定位符   通信协议 服务器名称 具体存放位置

Get获取资源 post提交资源(例如用户登录信息)

浏览器提供xhr js对象,向服务端发起请求

接口:请求资源地址

请求报文,响应报文:

 

 

 

Ajax请求:js文件

 

Html文件

 

Nodemon  ...js

可设置网络延时的操作:xhr.timeout  超时时长   xhr.ontimeout=function(){}超时回调     网络异常回调 xhr.onerror=function(){}

取消请求:xhr.abort()

 

Axios

<script crossorigin=”anonymous” src="https://cdn.bootcdn.net/ajax/libs/axios/0.27.2/axios.js"></script>

 

// 设置响应头,设置允许跨域
response.setHeader("Access-Control-Allow-Origin", "*")
// 设置所有类型的头信息都可以接收.允许自定义头信息
response.setHeader("Access-Control-Allow-Headers", "*")
// 配置任意方法
    response.setHeader("Access-Control-A1low-Method", "*");

 

 

Js高级

实例成员:构造函数中,由对象访问

静态成员:由构造函数访问

Prototype:原型对象。一般公共属性放到构造函数中,公共方法放到构造函数的原型对象中,节省内存

 

 

Star.prototype的原型._proto_指向Object

 

call()方法 调用函数,改变函数的this指向,可以实现继承 fn.call(obj) 此时this指向obj,不指向window,若无参数,还是指向windows

Apply(),与call()类似,但传的参数以数组(伪数组)的形式  fn.apply(o,[“pink”])

Bind() 不会调用函数,可以改变原来函数的this指向,返回新的函数

 

ES6通过类实现面向对象编程

数组新方法:forEach(function(value,index,array){})遍历数组,array为数组本身

Filter(function(value,index,array){return value>2})筛选数组,直接返回一个新数组

Some(function(value,index){ return ture})查找数组中是否有满足条件的元素,返回布尔值,找到第一个则返回。

Trim()去除字符串两边空格

Object.defineProperty(obj,“value”,{value:10}),修改或新增对象的属性,第三个参数可写,writable:false,则该属性不可更改

Object.keys(obj)获取对象的属性名放在一个数组中

严格模式:use strict  可给整个脚本或者单个函数使用

  1. 变量必须先声明再调用
  2. 不能随意删除已经声明好的变量
  3. 全局作用域中函数this指向undefined
  4. 构造函数不加new调用,this报错
  5. 定时器this还是指向window
  6. 函数中的参数不允许重明

 

高阶函数:使用函数作为参数或返回一个函数的高阶函数

 

闭包:指有权访问另外一个函数作用域变量的函数。

一个作用域可以访问另外一个函数中的局部变量

变量在的函数称为闭包函数

作用:延伸变量的作用范围

 

递归函数:一个函数在内部调用自己

浅拷贝:深层次对象拷贝的是引用地址,拷贝的深层次数据改变会影响原来的。 语法糖:Object.assign(new,old)

深拷贝:

 

正则表达式:var reg=//   reg.test(str)

/abc/ 只要包含abc就可以  

/^abc$/ 精确匹配,abc开头和结尾

/[abc]/ 只要匹配【abc】中的一个就可以

-范围符

[^]取反

* 次数大于等于0

+  次数大于等于1

? 1/0

{3} 次数为3

{3,} 次数大于等于3

 

ES6

let

声明的变量只在所处的块级域中有效({}块级域)

不存在变量提升

暂时性死区   var num=10;

If(true){

Console.log(num);

let num;

}

此时报错,因为num在if{}由let声明,与外面的num无关

 

 

const

  1. 声明常量,块级作用域
  2. 声明时需赋值
  3. 常量赋值后不能修改

 

数组 对象解构

箭头函数: const fn =()=>{}  函数体为一句返回值,{}可以省略

           形参只有一个时,()可省略    const fn = a =>a

没有自己的this,指向定义区域的this

 

This指向obj的作用域,但对象不产生作用域,此时say()定义在window上

 

剩余参数:..args

扩展运算符:可以将数组或对象转为用逗号分隔的参数序列

  1. 合并数组[...arr1,...arr2]    或者  arr1.push(...arr2)
  2. 将伪数组转为数组 [...lis]  或者  Array.from(lis) 可以传入函数,将item进行处理

 

Array的扩展方法:arr.find((item,index)=>{})查找数组中第一个满足条件的值,无则返回undefined

arr.findIndex()查找数组中一个满足条件的索引

arr.includes() 返回布尔值

 

模板字符串  ` 字符串`  可以解析变量  ${name} 相当于+name+

可以调用函数 ${ fn() } 显示函数的返回值

 

String的扩展方法:str.startsWith() 判断字符串是否以某参数开头 str.endWith()

 str.repeat(n),返回重复n次的新字符串

 

Set数据结构:类似数组,没有重复的值  const s=new Set([“a”,”a”,”b”]); s.size=2

给数组去重 arr=[...s]

 

遍历set,forEach()

 

标签:返回,函数,指向,对象,元素,笔记,js,学习,数组
From: https://www.cnblogs.com/yuro12138/p/17273098.html

相关文章

  • ajax学习笔记
    Ajax:浏览器和服务器之间数据交互的方式,底层是基于浏览器提供的xhr对象 基于xhr发起get请求创建实例Open函数Send函数Onreadystatechange事件const xhr=new XML......
  • 软考笔记
    PV操作与pv操作相关的几个概念1.临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机,磁带机等。2.临界区:每个进程中访问临界资源的那段代码称为临界区。3.信号量:......
  • Git学习笔记
    《Git学习笔记》一、词汇概念说明Git的用途Git是目前世界上最先进的分布式版本控制系统(没有之一)。其实就是用来管理文件内容变动的一个工具,即一个可下载安装的软件程序......
  • ORB_SLAM3源码阅读笔记(一)
    本文参考赵旭辉博士的ORB_SLAM3源码阅读记录以及自己的源码阅读进行随笔记录,详细内容可参考链接一、结构  算法整体上需要关注的是三个线程,阅读源码的过程中也始终以这......
  • VUE3基础笔记
    date:2023-3-3010:00:00categories:-前端系列tags:-VUEtitle:VUE3基础笔记视频地址:2022最新Vue零基础小白入门教程,从入门到精通,快速上手简单易懂_哔哩哔哩_b......
  • 深度学习(二)--神经网络
    一:神经网络的历史神经网络的发展可谓经历了一波三折:神经网络的发展过程二:M-P模型三:感知机四:多层感知机五:误差反向传播函数六:误差函数和激活函数七:似然函数八:随机梯度下降法......
  • python学习(二)
    1Python中的标识符和保留字有的单词赋予了特定的意义,在给对象起名字时不能使用例如代码:importkeywordprint(keyword.kwlist)结果:['False','None','True','and......
  • python+playwright 学习-42 离线安装 playwright 环境
    前言有些同学可能是在公司局域网办公,无法连到外网去在线下载,本篇教大家在本地局域网部署好playwright环境playwright本地下载先找个有网络的电脑,下载playwright,不要......
  • IM跨平台技术学习(七):得物基于Electron开发客服IM桌面端的技术实践
    本文由得物技术团队Uni分享,即时通讯网收录时有内容修订和排版优化。一、引言本文要分享的是得物技术团队基于Electron开发客服IM桌面端的技术实践过程,内容包括桌面技术......
  • 【HMS Core】FAQ之机器学习服务知多少
    【问题描述1】使用骨骼点驱动虚拟人偶,华为是否提供相关能力以及可使用的API?【解决方案】API请参考下图:参考链接:https://developer.huawei.com/consumer/cn/doc/development/......