![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JavaScript
JavaScript
-王二毛-
学无止境
展开
-
JavaScript作用域与作用域链
其实还是this指向规则问题var x = 10;function fn() { console.log(x);}function show(f) { var x = 20; f();}show(fn);//10var fn = function() { console.log(fn);}fn()var obj = { fn2: function() { console.log(fn2); }}obj.fn2()var fn = function()原创 2021-05-23 11:13:18 · 101 阅读 · 0 评论 -
JavaScript执行上下文
执行上下文代码分类(位置)全局代码函数代码全局执行上下文在执行全局代码前将window确定为全局执行上下文对全局数据进行预处理var定义的全局变量==>undefined, 添加为window的属性function声明的全局函数==>赋值(fun), 添加为window的方法this==>赋值(window)开始执行全局代码函数执行上下文在调用函数, 准备执行函数体之前, 创建对应的函数执行上下文对象对局部数据进行预处理形参变量==原创 2021-05-23 10:59:13 · 72 阅读 · 0 评论 -
JavaScript变量提升与函数提升
变量声明提升通过var定义(声明)的变量, 在定义语句之前就可以访问到值: undefined函数声明提升通过function声明的函数, 在之前就可以直接调用值: 函数定义(对象)问题: 变量提升和函数提升是如何产生的?面试题//变量声明提升 var a = 2 function fn () { console.log(a) var a = 3 } fn()//undefined //函数声明提升a2() // a2()functi.原创 2021-05-23 09:54:30 · 93 阅读 · 0 评论 -
JavaScript数组去重
一、使用Set()let arr = [1, 2, 3, 7, 5, 7, 7, 8, 9, 10];let newArr=Array.from(new Set(arr));console.log(newArr);二、原生JavaScript实现// 原数组let arr = [1, 7, 3, 7, 5, 7, 7, 8, 9, 10];//新数组let newArr = [];newArr[0] = arr[0];for (let i = 0; i < arr.length原创 2021-06-08 09:49:01 · 91 阅读 · 0 评论 -
JavaScript时间格式化函数的使用
了解相关函数的使用<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascript"> // 一、创建日期的三种方式 // 创建一个日期,放回当前日期 let date1 =new Date(); console.log(date1); // 根据指原创 2021-06-06 10:41:08 · 86 阅读 · 0 评论 -
javascript数据类型及数据类型判断的四种方法
typeof(特点:不能具体是哪一类object)可以利用 typeof 来判断number, string, object, boolean, function, undefined, symbol 这七种类型,但是,typeof 在判断一个 object的数据的时候只能告诉我们这个数据是 object, 而不能细致的具体到是哪一种 object(例如:数组,对象,正则,返回值都是object,不能具体是哪一类object)function fun(){};let s=new String('str原创 2021-05-17 13:24:29 · 113 阅读 · 0 评论 -
Generator中的yield和next
yield语句本身没有返回值var b = 9;var a = function*() { b = yield(10); /* *拆分成 *yield(10); * b=yield(10); * 因为yield语句本身没有返回值,所以,b为undefined */ return 11;}var f = a();console.log(f.next().value, b, f.next().value, b);拓展 next传入的参数,其实是把上一个yield语句的返回的值给覆原创 2021-05-22 21:33:31 · 181 阅读 · 0 评论 -
JavaScript原型到原型链
原型(显示原型和隐式原型)每一个JavaScript对象(null除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型"继承"属性。核心:实例对象的隐式原型的值为其对应构造函数的显式原型的值function Fun(){//内部自动执行语句:this.prototype={};}1.每个函数function都有一 个prototype, 定义函数时自动添加,显式原型prototype是一个对象,且默认指向一个空的Object对象console.log(F原创 2021-05-17 13:23:10 · 119 阅读 · 0 评论 -
JavaScript对象
菜鸟教程split()方法charAt() 方法toUpperCase方法原创 2021-06-06 13:24:08 · 84 阅读 · 0 评论 -
JavaScript函数节流和函数防抖
函数节流函数节流:一个函数执行一次后,只有大于设定的执行周期后才会执行第二次。-有个需要频繁触发函数,出于优化性能角度,在规定时间内,只让函数触发的第一次生效,后面不生效原创 2021-06-08 11:29:43 · 64 阅读 · 0 评论 -
JavaScript实现深浅克隆
深克隆javascriptlet obj = { a: 100, b: [10, 20, 30], c: { x: 10 }, d: /^\d+$/}; // 深克隆 /*let obj2=JSON.parse(JSON.stringify(obj)); console.log(obj2); 有问题,如果有正则或函数,将变成空对象,例如:d:{} 如果没有正则或函数,则可以使用 */function deepClone(obj) { //过滤特殊情况,避免死递归 i原创 2021-06-06 09:57:14 · 76 阅读 · 0 评论 -
JavaScript闭包——实现模块化功能
产生闭包?当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时, 就产生了闭包即:函数嵌套 内部函数引用了外部函数的数据(变量/函数)function fn1() { var a = 3 function fn2() { //fn2是一个嵌套的内部(子)函数 console.log(a) //引用了嵌套的外部(父)函数的变量a }}fn1() //执行外部函数常见闭包1. 将函数作为另一个函数的返回值 // 1. 将函数作为另一个函数的返原创 2021-05-23 11:43:40 · 204 阅读 · 2 评论 -
JavaScript同步、异步和process.nextTick、setImmediate面试题
一、async function async1() { console.log('async1 start'); await async2(); console.log('async1 end');}async function async2() { console.log('async2');}console.log('script start');setTimeout(function() { console.log('setTimeout'); },0) async1原创 2021-05-22 09:13:52 · 1050 阅读 · 0 评论 -
javascript中的函数对象的call、apply和bind方法,及this指向总结
call()和apply()这两个方法都是函数对象的方法,需要通过函数对象来调用;当对函数调用call()和apply()都会调用函数执行function fun() { console.log("调用fun方法");}fun(); //调用fun方法fun.call(); //调用fun方法fun.apply(); //调用fun方法在调用call()和apply()可以将一个对象指定为第一个参数此时这个对象将会成为函数执行时的thisfunction fun() { co原创 2021-05-22 11:33:26 · 103 阅读 · 2 评论 -
JavaScript中的this问题
一、函数中的thisfunction Person(color) { console.log(this) this.color = color; this.getColor = function() { console.log(this) return this.color; }; this.setColor = function(color) { console.log(this) this.color = color; };}Person("red"); //this原创 2021-05-22 10:29:04 · 108 阅读 · 1 评论 -
javasc多文件的作用域&模块中的作用域
新建两个文件,test.js和test2.js多文件的作用域test.js中定义的变量,可以在test2.js中使用,即两个文件共用同一个全局对象多文件let定义与上面的var定义的区别模块中的作用域defer的作用是,先加载test.js...原创 2021-05-16 08:46:50 · 77 阅读 · 0 评论 -
JavaScript全局对象Global Object
区别全局作用域和全局对象将变量var声明的gal变量或函数添加到全局对象中,可通过this或self访问var gal ="Global Object"console.log(gal);//Global Objectconsole.log(this.gal);//Global Objectconsole.log(self.gal);//Global Objectfunction print(){ console.log("王二毛");}print();//王二毛this.print(原创 2021-05-16 08:44:33 · 532 阅读 · 0 评论 -
Javascript作用域
一、全局作用域var a=10;//全局作用域function print(){ var b=12;//局部作用域(函数作用域) console.log(a);//10}console.log(b);//b is not defined二、局部作用域(函数作用域)同上三、块作用域所有{ }内都是一个独立的作用域,例如if,for,但对象的{ }不包括。特点:使用let或const定义的变量if(true){ var a=10;//使用var声明的变量,在全局作用域 conso原创 2021-05-16 08:44:22 · 57 阅读 · 0 评论 -
JavaScript变量提升和函数提升
使用 var定义的变量,或function函数,会在js预编译阶段被放入内存中函数提升print();//函数提升function print() { console.log("函数提升");}变量提升console.log(a)//undefinedvar a = "变量提升";/*1、声明变量var a,初始化成undefined2、变量赋值a = "变量提升"*/函数中的变量提升print();function print() { console.原创 2021-05-16 08:43:48 · 44 阅读 · 0 评论 -
JavaScript闭包
dsf原创 2021-05-16 08:41:41 · 51 阅读 · 0 评论 -
javascript实用记录
filter实例,返回数组 ages 中所有元素都大于 18 的元素:<script>var ages = [32, 33, 16, 40];function checkAdult(age) { return age >= 18;}function myFunction() { document.getElementById("demo").innerHTML = ages.filter(checkAdult);}</script>map实例,原创 2021-04-26 15:28:14 · 141 阅读 · 0 评论 -
javaScript引用变量赋值
2个引用变量指向同-一个对象, 通过一个变量修改对象内部数据, 另一个变量看到的是修改之后的数据2个引用变量指向同-一个对象,让其中一个 引用变量指向另-一个对象,另 一引用变量依然指向前一个对象<script>var obj1={name:'enyi'}var obj2=obj1;obj2.name='wang';console.log(obj1.name);//wangconsole.log(obj2.name);//wangfunction fn(obj){ obj.na原创 2021-03-31 22:24:09 · 153 阅读 · 0 评论 -
JavaScript面试题
undefined与null的取别undefined未定义null定义了但是没有赋值原创 2021-03-31 22:23:32 · 83 阅读 · 0 评论 -
JavaScript数据,内存,变量
数据储存在内存中代表特定的信息。数据的特点: 1、可传递 2、可运算一切皆数据内存中所有操作的目标:数据内存内存条通电后产生的可储存数据的空间(临时的)内存产生和死亡:内存条( 电路版)==>通电==>产生内存空间==>存储数据==>处理数据=>断电==>内存空间和数据都消失一块小内存的2个数据 *内部存储的数据 *地址值内存分类 *栈:全局变量/局部变量 *堆:对象变量可变化的量, 由变量名和变量值组成每个变量都对应的一 块小内存原创 2021-03-31 21:48:02 · 56 阅读 · 0 评论 -
JavaScript——DOM(Document Object Model)文档对象模型
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <script> /* onload事件会在整个页面加载完成之后才触发 为wi ndow绑定-个onload事件 该事件对应的响应函数将会在页面加载完成之后执行, 这样可以确保我们的代码执行时所有的DOM对象已经加载完毕了 */ window.原创 2021-03-30 15:43:07 · 96 阅读 · 0 评论 -
JavaScript正则表达式
正则表达式创建正则表达式var 变量=new RegExp(“正则表达式”,“匹配模式”) var reg = new RegExp("a","i");//检测是否有a或使用字面量var reg=/正则表达式/匹配模式 reg =/a/i;使用typeof检测时,返回objectvar reg = new RegExp("a");//检测是否有avar str = "a";正则表达式的方法:test( ) 使用这个方法可以用来检查一个字符串是否符合正则表达式的规则, 如果符合则返原创 2021-03-30 15:40:50 · 57 阅读 · 0 评论 -
JavaScript数组
创建 var arr=new Array();//new Array(1,2,3,4); 或(使用字面量创建数组) var arr=[5];//var arr=[0,1,2,3,4]添加元素 arr[0]=10; arr[1]=11; arr[arr.length]=90;读取 console.log(arr[0])获取数组长度 console.log(arr.length)数组的方法 push在末尾添加n个元素,返回数组新的长度 arr.push("hello","world原创 2021-03-30 15:39:04 · 67 阅读 · 0 评论 -
JavaScript的this对象
全局作用域js中的两种作用域全局作用域直接编写在script标签中的js代码,都在全局作用域页面打开时创建,关闭时销毁在全局作用域中有一个全局对象window(代表浏览器窗口)var a=90;console.log(window.a);//即console.log(a);局部作用域声明提前变量的声明提前-使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值) ,但是如果声明变量时不适用var关键字,则变量不会被声明提前函数的声明提前-使用函数声 明形式创建的原创 2021-03-30 15:37:22 · 52 阅读 · 0 评论 -
JavaScript函数function
函数function函数也是一个对象使用typeof检查时,会返回function使用函数声明创建函数 语法:function 函数名(形参...){ } 调用函数名()使用函数表达式创建函数 var fun = function (形参...){ console.log("匿名函数") } 调用fun()立即函数<!DOCTYPE html><html> <head> <meta charset="utf-8">原创 2021-03-30 15:36:24 · 378 阅读 · 0 评论 -
JavaScript对象object(引用数据类型)
对象分类1.内建对象-由ES标准中定义的对象,在任何的ES的实现中都可以使用 -比如: Math String Number Boolean Function object. .2.宿主对象-由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象 -比如BOM DOM3.自定义对象 程序员自己定义创建对象 var obj =new Object(); 或var obj={}向对象中添加属性 obj.name="王二毛"; obj.sex="男"; obj.age=18;原创 2021-03-30 15:35:34 · 326 阅读 · 0 评论 -
JavaScript输出语句,输入框,确认框
alert()控制浏览器弹出一个警告窗document.write()向body中输出一个内容console.log()向控制台输出一个内容原创 2021-03-30 15:30:17 · 521 阅读 · 0 评论 -
JavaScript——json
jsonJSON和JS对象的格式一样,只不过JSON字符串中的属性名必须加双引号json --> js对象 JSON.parse() 可以将以JSON字符串转换为js对象 -它需要-个JSON字符串作为参数,会将该字符串转换为JS对象并返回js对象 --> json JSON.stringify() -可以将一个JS对象转换为 JSON字符串 -需要一个js对象作为参数,会返回一个ISON字符串解决IE8以下不兼容问题方法一:var str = ' {"name":原创 2021-03-29 18:19:55 · 124 阅读 · 0 评论