javaScript
文章平均质量分 58
javaScript基础以及项目
~往无前
这个作者很懒,什么都没留下…
展开
-
闭包的原理
关于什么是闭包,我想很多人都是知其然,不知其所以然,下面我将彻底解释这个闭包这个东西,以及用它要解决的问题。先扫一眼下面的代码,相信有点基础的都能看懂是什么意思。这个就是平时我们在解释闭包时经常用到的例子。 <script> var ul=document.getElementById("ul"); //当使用var变量定义,实现点击事件 for(var i=0;i<ul.length;i++){ .原创 2021-04-29 20:19:54 · 244 阅读 · 0 评论 -
js运算符
js运算符1.数字的加法运算数字+数字=数字运算;例:console.log( 1 + 1 ); //结果为2;特殊运算:console.log(0.1+0.2); //结果为0.333333333334;js存储数据是IEE47->双精度浮点数计算准确结果的方式:console.log((0.1 * 10+0.2 * 10)/10); //碰到浮点数的方法:先将小数转为整数,再进行还原操作;其他数据之间的运算:NaN和谁运算都是NaNInfinity 的运算符合数学计算原创 2021-04-25 09:06:58 · 426 阅读 · 0 评论 -
javaScript表单验证
1.javaScript表单验证以下实例代码用于判断表单字段(fname)值是否存在,如果不存在,就弹出信息,阻止表单提交;//javascriptfunction validateForm(){ var x=document.forms["myForm"]["fname"].value; if(x==null||x==" "){ alert("需要输入名字"); return false; //阻止表单提交 }}//HTML表单实例<form name="myForm"原创 2021-04-25 09:05:43 · 203 阅读 · 0 评论 -
JSON
一、JSON.pares()JSON通常用于与服务器交换数据。在接收服务器数据时一般是字符串。我们可以使用JSON.parse()方法将数据转换为JavaScript对象。JSON.parse(text[,revier])//text:必须,一个有效的JSON字符串.//revier:可选,一个转换结构的函数,将为对象的每个成员调用此函数JSON解析实例:例如我们从服务器接收了以下数据:{"name":"runoob","alexa":1000,"site":"www.runoob,com原创 2021-04-25 09:04:25 · 228 阅读 · 0 评论 -
web Worker
H5 web Worker1.概述:H5规范提供了js分线程的实现,取名为:Web Workers。Web Worker是HTML5提供的一个javascript多线程解决方案。我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面,但还是规定只有主线程才能更新界面。2.特点:(1)同源限制:分配给 Worker 线程运行的脚本文件,必须与主线程的脚本文件同源。(2)DOM限制Worker 线程所在的全局对象,与主线程不一样,无法读取主线程所在网页的 DOM 对象,也无法使用原创 2021-04-25 09:02:16 · 336 阅读 · 0 评论 -
16.线程机制于事件循环
1.关于线程问题:JS是单线程的,使用H5中的Web Worker可以多线程执行浏览器是多线程执行的。浏览器是多进程:chrome ,单进程:firefox2.浏览器内核:支撑浏览器最核心的程序不同浏览器可能不一样内核由很多模块组成:3.主线程和分线程主线程:js引擎模块,负责js程序的编译于运行html,css文档解析模块:负责页面文本的解析。将文本解析为一个个的节点。DOM/CSS模块:负责dom/css在内存中的相关处理,最终将所有的节点都解析为一个个对象,根据相互原创 2021-04-25 09:00:07 · 133 阅读 · 0 评论 -
14.对象创建模式
下面介绍几种javaScript中创建对象的方式:方式一、Object构造函数模式先创建空object对象,再动态的添加属性/方法使用常见:起始时不确定对象内部数据问题:语句太多var obj=new Object(); obj.name='lhh', p.age=12, p.setName=function(name){ this.name=name;}方式二、对象字面量模式使用{}创建对象,同时执行属性/方法使用场景:起始时对象内部数据时确定的。原创 2021-04-22 20:16:28 · 98 阅读 · 0 评论 -
13.内存溢出和内存泄漏
1.内存溢出:一种程序运行出现的错误当程序运行需要的内存超过了剩余的内存时,就抛出内存溢出的错误。2.内存泄漏占用的内存没有及时释放内存泄漏积累多了就容易导致内存溢出3.常见的内存泄漏意外的全局变量function fn(){ //这里的a是一个全局变量,占用了大量的全局变量空间,从而导致内存泄漏 a=jnew Array(1000000)console.log(a)}fn();没有及时清理的计时器或回调函数。计时器多了就会占用太多的内存,也会造成内存泄原创 2021-04-22 19:22:39 · 215 阅读 · 0 评论 -
12.闭包
一、背景实现点击某个按钮,提示点击的是第几个按钮var btns=document.getElementsByTagName('btn');for(var i=0,length=btns.length;i<length;i++){ var btn=btns[i]; btn.onclick=function(){ alert('第'+(i+1)+'个') }}console.log(i);//在函数未被触发时,全局中的i值为3,点击之后函数从全局中找i原创 2021-04-22 19:20:58 · 237 阅读 · 0 评论 -
11.作用于链作用域
函数上下文和作用域链的区别:1.作用域是静态的,只要函数定义好了就一直存在,且不会再变化。执行上下文是动态的,调用函数时创建,函数调用结束就会 自动释放。联系:1.执行上下文对象是从属于所在的作用域。2.全局上下文环境,从属于全局作用域。3.函数上下文环境,从属于函数使用作用域。var x=10;function fn(){ consolel.log(x);}function show(f){ var x=20; f();}show(fn);//结果输出的是10,因为fn会直接在原创 2021-04-22 19:07:42 · 96 阅读 · 0 评论 -
07.变量提升和函数提升以及执行上下文
一、变量提升和函数提升1.函数声明提升,通过function声明的函数,在之前就可以直接调用。但是通过函数表达式方式定义的函数,无法实现提升门。fn(); //可以直接实现函数提升fn1(); //不可以执行函数会报错console.log(fn1); //undefined 属于变量提升function fn(){ console.log("hello");}var fn1=function(){ console.log("world");}二、全局执行上下文1.原创 2021-04-22 19:06:21 · 206 阅读 · 0 评论 -
05.instanceof
一、探索 instanceof1.instanceof是如何判断的?A instanceof B//如果B函数的现实原型对象在A对象的原型链上,返回true,否则返回false//Object作为实例对象,它的隐式原型指向的是构造函数的的原型,也就是Function prototype。Function作为构造函数,它的显示原型指向的是Function prototype;console.log(Object instanceof Function);//true;//Object作为构造函数原创 2021-04-22 19:01:05 · 118 阅读 · 0 评论 -
04.1.函数高级原型及原型链
一、原型1.函数的prototype属性每个函数都有一个prototype属性,它默认指向一个Object空对象(即:原型对象);原型对象中有一个属性constructor.它指向函数对象。给原型对象添加属性(一般是方法),实例对象可以访问。二、显示原型与隐式原型1.每个函数function都有一个prototype,即显示原型(属性)2.每个实例对象都有一个_proto_,称为隐式原型。3.对象的隐式原型的值为其构造函数的显示原型的值。console.log(Fn.prototype原创 2021-04-22 18:53:01 · 324 阅读 · 0 评论 -
函数方法call()、apply()、bind()
一、显示函数绑定在JavaScript中函数也是对象,对象则有方法,apply和calll就是函数对象的方法。这两个方法可以切换函数执行的上下文this绑定的对象。var person1={ fullName:function(){ return this.firstName+" "+this.lastName; }}var person2={ firstName="John", lastName="Doe",}//通过使用函数的call(),apply(),bind()方法来改变函原创 2021-04-22 18:40:52 · 199 阅读 · 0 评论 -
02.函数的定义
一、如何定义函数1.函数声明 2.表达式二、如何调用函数?test() //直接调用obj.test(); //通过对象调用new test(); //new调用test.call/apply(obj);//表示函数中的this指向对象obj;相当于obj.test();三、什么函数是回调函数?1.自己定义的 2.自己没有掉 3.但最终执行了常见的回调函数:dom事件回调函数定时器回调函数ajax请求回调函数生命周期回调函数四、立原创 2021-04-22 18:28:14 · 82 阅读 · 0 评论 -
01.数据类型
一、typeof1.数据类型 :基本类型和引用类型基本类型:string,number,boolean,undefined,null;引用类型:object(对象),Function(一种特殊的对象),Array(一种特殊的对象)。2.使用typeof判断的值都是字符串var a=1;var b='2';var c=true;var d=undefined;var e=null;console.log(typeof a);//结果是一个字符串'number'console.log(ty原创 2021-04-22 18:27:25 · 165 阅读 · 0 评论 -
Es-Module的加载实现
浏览器加载传统方法//页面内嵌的脚本<script>//module code</script>//外部脚本<script src="./module.js></script>默认情况下,浏览器同步加载javaScript脚本,即渲染引擎遇到如果脚本的体积很大,下载和执行时间就会很长,因此造成浏览器堵塞,用户会感觉到到浏览器“卡死了”,没有任何响应。这显然是不好的体验,所以浏览器允许脚本异步加载,下面就是两种异步加载的语法。<scr原创 2021-03-31 16:50:25 · 477 阅读 · 0 评论 -
JavaScript中的微任务和宏任务
在正常情况先下,JavaScript任务是同步执行的,即执行完一个前一个任务,然后执行后一个任务。也就是跟着主线任务按序执行。只有遇到异步任务的情况下,执行顺序才会改变。这时,需要区分两种任务:宏任务与微任务。再说宏任务与微任务之前,我们先说一个概念。javaScript是一门单线程语言,所以一切javaScript版的“多线程”都是的单线程模拟出来的一、JavaScript中的同步和异步同步和异步其实在我们的理解中上很容易明白,同步就是我按照代码的顺序来执行程序。异步就是遇到异步程序,我直接开一.转载 2021-03-18 20:47:42 · 1414 阅读 · 2 评论 -
ES Module的语法与使用
export1.输出方式//输出简单变量export var a=1;//方法export function fn(){//}//类export class c{//.... }2.放在花括号中输出var a=1;var b=2;export{a,b};function fn(){//}export{fn};class c{//}export{c};3.as语法ES module可以给输出的内容重命名,使用as来实现var a=1;export{转载 2020-11-30 22:20:08 · 1227 阅读 · 0 评论 -
javaScript函数中关于this的指向问题
this是js中的一个关键字,在不同的场合使用,this的值会发生变化,下面我将详细的介绍this在函数中的各种指向。在方法中,this表示该方法所属的对象。如果单独使用,this表示全局对象。在函数中,this表示全局对象。在函数的严格模式下,this是未定义的(undefined)。在事件中,this表示绑定事件的元素对象。下面实例介绍不同情况下的this(前提是非严格模式下)//在全局对象中function fn(){ var a=123; console.log(this.a原创 2020-10-28 15:07:37 · 432 阅读 · 0 评论