前端学习之JavaScript
crystal_iwwish
多读书 多看日出
展开
-
JavaScript-拷贝
浅拷贝:只拷贝最外面层的拷贝方式深拷贝:所有层都拷贝的方式观察以下代码,我们可以看到,作为键值对出现的数据,其中,uname,age,sex是基本类型,进行值传递,而color,message是引用类型,进行地址传递let obj = { uname : '猫', age : 1, sex : '公', color : ['red', 'black', 'yellow', 'pink'], message : { index : 1, score : 99原创 2021-10-20 20:44:48 · 86 阅读 · 0 评论 -
JavaScript-this指向问题
默认值1.1普通函数谁调用指向谁,严格模式下没有调用者时 this 的值为 undefined。function fn() { console.log(this); } fn();//输出window1.2箭头函数箭头函数中的 this 与普通函数完全不同,也不受调用方式的影响,事实上箭头函数中并不存在 this !箭头函数中访问的 this 不过是箭头函数所在作用域的 this 变量。 let sayHi = function () { con原创 2021-10-20 20:08:08 · 50 阅读 · 0 评论 -
JavaScript-封装与继承(两种)
一、封装1.1命名空间 // 命名空间:把变量当做属性,本质上是字面量对象 let zsf = { uname : '李四', age : 22, email : '[email protected]' } let lxh = { uname : '张三', age : 21, email : '[email protected]' } let zwj = zsf; zwj.uname = '王五'console.log( zsf.uname, lxh.uname )原创 2021-10-19 22:52:36 · 157 阅读 · 1 评论 -
JavaScript-包装类型
Stringlength:字符串长度 let str=new String('abcdegf') console.log(str.length)trim:去除字符串两端空白console.log(str.trim())split:把字符串分割为数组(以c进行分割,c就没有) console.log(str.split('c')) console.log(str.split(''))//每一项都转换出来toUpperCase:转大写 console.log(str.toUppe原创 2021-10-19 22:05:20 · 80 阅读 · 0 评论 -
JavaScript-传值(引用类型,基本类型)
传值:基本类型存入栈内存里,引用类型存入到堆内存(用的时候 在栈里面留了地址,地址指向堆内存中存的数据)堆与栈的区别:堆和栈是内存中的数据存储空间简单类型的数据保存在内存的栈空间中引用类型的数据保存在内存的堆空间中,栈内存中存取的是引用类型的地址(房间号)两种情况:值传递:把数据复制一份传递(基本类型)引用传递:把数据地址传递一份(引用类型)引用类型1. Object:是内置的构造函数,用于创建普通对象//静态方法创建新的对象Object.assign//Object.原创 2021-10-17 19:41:10 · 281 阅读 · 0 评论 -
JavaScript-面向对象(构造函数,实例成员,静态成员)
面向过程和对象,面向过程重点关注过程步骤,面向对象关注点是对象,对象里面有属性和方法构造函数如果一个函数使用new关键字调用,这个函数就是构造函数// new出来的对象 称为实例化对象,实例对象中的属性和方法称为实例成员//********************第一种********************* let o = new Object(); // 添加属性 o.uname = "zhang"; //添加方法 o.fei = function ()原创 2021-10-17 19:32:22 · 192 阅读 · 0 评论 -
JavaScript-解构赋值
数组解构数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法 // **********数组解构************ let arr = [1, 2, 3]; let [a, b, c] = arr; let [a, b, c] = [1, 2, 3]; console.log(a); // 1 console.log(b); // 2 console.log(c); // 3 // **********变量多值少**********原创 2021-10-16 20:48:26 · 66 阅读 · 0 评论 -
JavaScript-箭头函数
如果箭头函数中只有一个形参,那么可以省略小括号不写let fn=(x)=>{return x*x}let fn=x=>{return x*x}如果箭头函数的函数体只有一行代码,那么可以省略我们的大括号注意:如果把大括号省略 那么会默认返回结果,不用加returnlet fn=(x)=>x*xlet fn=x=>x*x箭头函数注意事项:1.函数会预解析,箭头函数不会预解析,所以不许先定义后使用2.如果遇见动态参数,箭头函数内部不存在arguments,可以用剩余原创 2021-10-16 20:47:22 · 88 阅读 · 0 评论 -
JavaScript-参数
默认值 // 参数默认值:给参数一个默认值,未定义默认值,参数的默认值为 `undefined` function fn(n = 0, m = 0) { let he = n + m; console.log(he); } //第一个参数位,不想传,传一个undefined(undifined优先级低) fn(undefined, 456);动态参数在函数内部有一个对象,叫做arguments( 作用是动态获取函数的实参),用于接受所有的实参原创 2021-10-16 20:39:28 · 61 阅读 · 0 评论 -
JavaScript-预解析(变量提升)
代码在执行之前先要预解析不是所有东西都要解析,主要解析变量和函数,只有带有声明的变量(n=7 没有声明),带有名字的函数才会被解析总结:1. 变量在未声明即被访问时会报语法错误2. 变量在声明之前即被访问,变量的值为 undefined3. let 声明的变量不存在变量提升,推荐使用 let【也有人认为具有提升但是不赋值不能使用】4. 变量提升出现在相同作用域当中5. 实际开发中推荐先声明再访问变量变量预解析:把变量的声明语法提升到作用域最前面(只定义不赋值)——变量提升直接赋值的变量不原创 2021-10-16 20:31:32 · 123 阅读 · 0 评论 -
JavaScript-闭包closure
是一种特殊的函数,能够访问函数作用域中的变量()(1)函数内部变量不能拿到外面使用(2)闭包的定义: 一个作用域可以访问另外一个函数内部的局部变量,或者说一个函数(子函数)访问另一个函数(父函数)中的变量,此时就会有闭包产生,那么这个变量所在的函数我们就称之为闭包函数。function fn(){ let num=123//这个值一直在,不会丢 //函数也是值,也是一种数据 return function fn1(){console.log(num)}//闭包函数}let原创 2021-10-16 20:22:16 · 98 阅读 · 0 评论 -
JavaScript-声明变量的关键字
let:(1)let n=1;let n=2;不允许这样书写——但可以重新赋值 let n=2;n=3(2)不属于window(3)具有块级作用域var:(1)var n=1;var n=2;允许这样书写(可以重新声明定义)(2)属于window(3)不具有块级作用域const:建议——由于他的性质,建议把固定不变的值放在const里面定义(和let比较相似)const n=9(1)const n=1;const n=2;不允许这样书写——(2)不可以重新赋值 let n=2;n=原创 2021-10-16 20:04:12 · 862 阅读 · 0 评论 -
JavaScript-作用域和作用域链
1.1局部作用域(函数作用域):声明在函数内部的变量【函数内部的作用域】1.2全局作用域:在代码中任何地方都能访问到的对象拥有全局作用域【整个script(函数外的作用域)】1.3块作用域:大括号里面的代码块块级变量类似于局部变量,for(){},if(){}都是块作用域js包括:ECMAScript,BOM,DOM★★★★★块级作用域的特点声明变量不会提升到代码块顶部 function fn(condition) { if (condition) {原创 2021-10-16 20:02:34 · 55 阅读 · 0 评论 -
JavaScript-运算符
运算符 算术运算符 赋值运算符 一元运算符 比较运算符 逻辑运算符 运算符优先级1.1 算数运算符符号功能-求差+求和*求积/求商%取模(取余数,判断是否被整除)1.2 赋值运算符运算符=+=-=*=/=%=1.3 一元运算符运算符功能自增++自减- -★★注意:++在变量前面:先自增后运算++在变量后面:先运算后自增1.原创 2021-09-28 21:10:49 · 67 阅读 · 0 评论 -
JavaScript-数据类型
七种基本数据类型• Number 数字型• String 字符串型• Boolean 布尔型(只有true和false两个值)• Undefined 未定义型(只有undefined 一个值)• Null 空类型(只有null 一个值)• Bigint 任意精度的整数(了解)• Symbol 代表(了解)一种引用数据类型:对象(object)object 对象Array 数组function 方法date 时间等等检测数据类型用typeof关键字 console.l原创 2021-09-27 20:32:44 · 51 阅读 · 0 评论 -
JavaScript-关于变量
变量基本使用步骤第一步:声明变量第二步:给变量赋值第三步:使用变量let name;name=joy;alert(name);一次性声明多个变量let age1,age2;age1=19;age2=29;alert(age1);alert(age2);注意事项:1. let不允许多次声明同一个变量2. 不声明直接使用会报错3. 不声明直接赋值,虽然不会报错,但是强烈不建议...原创 2021-09-27 20:17:53 · 59 阅读 · 0 评论 -
JavaScript-输入输出语法
输入语句prompt('请输入')输出语句 document.write("要输出的内容");//输出在页面上 console.log("要输出的内容");//输出在检查页面中 alert("要输出的内容");//弹框形式出现原创 2021-09-27 19:26:37 · 136 阅读 · 0 评论