From c7e5630c83266119885629b077f0d3feb4952e92 Mon Sep 17 00:00:00 2001 From: giteeyunyunyun <18883994582@163.com> Date: Sun, 2 May 2021 17:22:28 +0800 Subject: [PATCH] 18-1-2-3zuoye --- .../week18/18-3noteyun.md" | 21 ++ ...256\347\273\223\346\236\20418-2noteyun.md" | 236 ++++++++++++++++++ ...201\345\207\275\346\225\26018-1noteyun.md" | 217 ++++++++++++++++ 3 files changed, 474 insertions(+) create mode 100644 "\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/5\347\217\255/5\347\217\255_\344\272\221/week18/18-3noteyun.md" create mode 100644 "\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/5\347\217\255/5\347\217\255_\344\272\221/week18/JS\345\221\275\345\220\215\350\247\204\350\214\203\343\200\201\346\225\260\346\215\256\347\261\273\345\236\213\343\200\201\346\225\260\346\215\256\347\273\223\346\236\20418-2noteyun.md" create mode 100644 "\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/5\347\217\255/5\347\217\255_\344\272\221/week18/JavaScript\347\256\200\344\273\213\343\200\201\347\216\257\345\242\203\346\220\255\345\273\272\343\200\201\345\217\230\351\207\217\343\200\201\345\207\275\346\225\26018-1noteyun.md" diff --git "a/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/5\347\217\255/5\347\217\255_\344\272\221/week18/18-3noteyun.md" "b/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/5\347\217\255/5\347\217\255_\344\272\221/week18/18-3noteyun.md" new file mode 100644 index 00000000..76366cbd --- /dev/null +++ "b/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/5\347\217\255/5\347\217\255_\344\272\221/week18/18-3noteyun.md" @@ -0,0 +1,21 @@ +18-3noteyun + +需要补充 + +视频听了一遍 +笔记,需要手动再写。 + + + + + + + + + + + + + + + diff --git "a/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/5\347\217\255/5\347\217\255_\344\272\221/week18/JS\345\221\275\345\220\215\350\247\204\350\214\203\343\200\201\346\225\260\346\215\256\347\261\273\345\236\213\343\200\201\346\225\260\346\215\256\347\273\223\346\236\20418-2noteyun.md" "b/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/5\347\217\255/5\347\217\255_\344\272\221/week18/JS\345\221\275\345\220\215\350\247\204\350\214\203\343\200\201\346\225\260\346\215\256\347\261\273\345\236\213\343\200\201\346\225\260\346\215\256\347\273\223\346\236\20418-2noteyun.md" new file mode 100644 index 00000000..d3062e2e --- /dev/null +++ "b/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/5\347\217\255/5\347\217\255_\344\272\221/week18/JS\345\221\275\345\220\215\350\247\204\350\214\203\343\200\201\346\225\260\346\215\256\347\261\273\345\236\213\343\200\201\346\225\260\346\215\256\347\273\223\346\236\20418-2noteyun.md" @@ -0,0 +1,236 @@ +18-2noteyun + +JS命名规范、数据类型、数据结构 + + + +# 命名规范 + +- 变量和函数都是使用小驼峰命名法 + + ``` + let myVariable = 1 + ``` + +- 常量使用大写 + + ``` + CONST MAX_NUM = 1000 + ``` + +- 类和构造函数使用大驼峰命名法 + + ``` + //构造函数 + function Dog(){ + this.color = 'black' + } + ``` + +- 私有属性用`_`表示 + + ``` + function Dog(){ + this.color = 'black' + this._owner = 'tunan' + } + ``` + +- 注释 + + - 单行注释 + + ``` + // ..... + ``` + + - 多行注释 + + ``` + /* ... */ + ``` + +# 基本数据类型 + +- 6种原始类型 + + ```javascript + undefined boolean number + Bigint String Symbol + ``` + + - undefined + + ``` + typeof False + "undefined" // 返回undefined的原因是js当中false是小写, False的话就变成了一个变量. 没有赋值声明的变量, 默认会指向undefined + ``` + + - boolean(布尔类型) + + ``` + typeof false + typeof true + ``` + + - number + + ``` + typeof 1 + typeof 1.0 + ``` + + - Bigint + + ``` + typeof 12324n + ``` + + - String(字符串) + + ``` + typeof '1' + ``` + + - Symbol(符号) + + > 了解即可 利用Symbol声明一个独一无二的变量; + + ``` + let a = Symbol(1) + let b = Symbol(1) + + a === b + ``` + + ![image-20210430105032905](C:\Users\yunqin\AppData\Roaming\Typora\typora-user-images\image-20210430105032905.png) + + ``` + object null function + ``` + +- Object + + 一种类似字典, 用键对值表示属性关系的数据类型. **键是字符串或者Symbol**, 值可以是任意值. + + ``` + let obj = {undefined: 1, false:2, 1:3, 1n:4, '1':5} + + // 正确赋值Symbol的方法 + let a = Symbol(1) + obj[a] = 6 + ``` + + - null + + - null和undefined有什么区别? + + ``` + null表示一个空指针. undefined表示"无" 这样的一个值. + ``` + +- Function + +# 基本数据结构 + +- 对象 + + > 表面像字典, 但本质和python中的类相似, 里面的键对值相当于python类中的类属性 + + - 直接声明 + + ``` + let obj = {undefined: 1, false:2, 1:3, 1n:4, '1':5} + ``` + + - 通过New一个对象 + + ``` + function Dog(){ + this.color = 'black' + } + + new Dog() // 返回了一个对象 + ``` + +- 数组 + + > 类似python中的list, 但是扩容机制有区别 + + - 声明一个数组 + + ```javascript + let myArray = [1, 2] + myArray[3] = 'a' + + myArray + (4) [1, 2, empty, "a"] + ``` + + - Uint8Array + + 表示8位无符号整型数组, 表示0~255. 用来存储二进制流; + + ``` + new Uint8Array(length) + + + let myArray=new Uint8Array() + undefined + myArray + Uint8Array [] + + //需要指定具体的长度 + let myArray=new Uint8Array(7) + undefined + myArray[1]=34 + 34 + myArray + Uint8Array(7) [0, 34, 0, 0, 0, 0, 0] + + + ``` + + ![image-20210430111616207](C:\Users\yunqin\AppData\Roaming\Typora\typora-user-images\image-20210430111616207.png) + + ![image-20210430111628478](C:\Users\yunqin\AppData\Roaming\Typora\typora-user-images\image-20210430111628478.png) + + 超过255,如258,会移动3位,即2 + + + + - Uint16Array + + - Uint32Array + +- Map + + > 可以认为是有序的字典 + + ``` + let myMap = new Map() + + myMap['a']=123 + 123 + myMap + Map(0) {a: 123}[[Entries]]No propertiesa: 123size: (...)__proto__: Mapclear: ƒ clear()constructor: ƒ Map()delete: ƒ delete()entries: ƒ entries()forEach: ƒ forEach()get: ƒ ()has: ƒ has()keys: ƒ keys()set: ƒ ()size: (...)values: ƒ values()Symbol(Symbol.iterator): ƒ entries()Symbol(Symbol.toStringTag): "Map"get size: ƒ size()__proto__: Object + + ``` + + ![image-20210430112150281](C:\Users\yunqin\AppData\Roaming\Typora\typora-user-images\image-20210430112150281.png) + + - Map和HashMap(字典)的区别? + - 对象可能通过继承关系获取自带的一些属性, 而Map不会. + - Map提供了很多字典常用功能. + +- Set 没有value的字典 + + ```javascript + let mySet = new Set() + mySet.add(1) + ``` + +# 课后作业 + +- 熟悉JS的命名规范 +- 练习JS基本类型和数据结构的声明 \ No newline at end of file diff --git "a/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/5\347\217\255/5\347\217\255_\344\272\221/week18/JavaScript\347\256\200\344\273\213\343\200\201\347\216\257\345\242\203\346\220\255\345\273\272\343\200\201\345\217\230\351\207\217\343\200\201\345\207\275\346\225\26018-1noteyun.md" "b/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/5\347\217\255/5\347\217\255_\344\272\221/week18/JavaScript\347\256\200\344\273\213\343\200\201\347\216\257\345\242\203\346\220\255\345\273\272\343\200\201\345\217\230\351\207\217\343\200\201\345\207\275\346\225\26018-1noteyun.md" new file mode 100644 index 00000000..32bc587f --- /dev/null +++ "b/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/5\347\217\255/5\347\217\255_\344\272\221/week18/JavaScript\347\256\200\344\273\213\343\200\201\347\216\257\345\242\203\346\220\255\345\273\272\343\200\201\345\217\230\351\207\217\343\200\201\345\207\275\346\225\26018-1noteyun.md" @@ -0,0 +1,217 @@ +18-1-noteyun + + + +# JavaScript简介 + +- 什么是javascript? + + JS是一种脚本, **动态**, **弱类型**语言. 基于在网页上实现复杂功能而产生的语言. + + 虽然JS做为开发web页面的脚本语言而出名. 但是如今已被用到了很多非浏览器环境当中, 比如**NodeJS, Apache, Electron, Frida.** + + - 动态语言意味着JS不需要提前声明变量的类型; + - 弱类型意味着JS可以隐式地转换类型; + +- JavaScript可以做什么? + + - 操作页面 + - 响应网页发生的事件 + - 数据处理 + - 胶水语言, 连接各种语言环境. freda语言? + +- Java和JavaScript有什么关系? + + 雷锋和雷峰塔的关系. 除了语法相似以外, 几乎没有任何关系. + +- JavaScript和JQuery有什么关系? + + JQuery其实是JS的一个框架, 它封装了很多原生函数, 提供了更丰富的函数库. `Vue`和`React`等框架也是同样的道理, 只是它们在高度封装的过程中, 发展出了自己的抽象内涵. + + JQuery是在JS的基础上,往上封装; + + > 动态弱类型: + > + > image-20210429101525875 + > + > 监听点击事件: + > + > ![image-20210429102122376](C:\Users\yunqin\AppData\Roaming\Typora\typora-user-images\image-20210429102122376.png) + > + > 啊啊 + > + > dad + + + + + +# 运行环境 + +- 浏览器页面内 + + > 浏览器为什么可以直接运行js + + 在浏览器内核中提供了JS引擎, 所以可以直接执行JS. 该JS引擎只是浏览器的一个线程, 用来执行js. + +- 浏览器页面外 + + 本质就是封装了浏览器内核当中的JS引擎, 达到了浏览器外运行JS的目的. + + - Node.Js + - PyV8 单线程;如何性能优化:携程、异步;as io + +# 环境搭建 + +- 安装Node.js + + ``` + https://nodejs.org/en/ + ``` + + ![image-20210429104308781](C:\Users\yunqin\AppData\Roaming\Typora\typora-user-images\image-20210429104308781.png) + +- 安装IDE + + ``` + https://www.jetbrains.com/webstorm/ + 对电脑硬件要求高; + 比较大,建立索引,电脑卡; + ``` + +- 配置IDE + + ``` + File -> Settings -> Language&Frameworks -> Node.js and NPM + ``` + +# 变量声明 + +- 可变变量 + + 声明一个可变变量 + + ``` + var a = 1; + let b = 2; + ``` + + - let和var的区别 + + - var不会引起变量作用域的改变,可变变量 + + ``` + a = 1 + function foo(){ + console.log(a) + } + + // var a; + let a; + ``` + + - let只在代码块区域中有效,局部变量 + + ``` + function foo(){ + { + var a = 1; + let b = 2; + } + console.log(a); + console.log(b); + } + + foo() + ``` + +- 不可变变量/常量 + + ``` + const NAME = "tunan" + NAME = "chihai" + ``` + + ![image-20210429122834643](C:\Users\yunqin\AppData\Roaming\Typora\typora-user-images\image-20210429122834643.png) + +# 函数声明 + +- 普通函数 + + - 关键字是function + + - 函数体在代码块`{}`中声明 + + - 每一句语句结束以`;`结尾 + + ![image-20210429123549298](C:\Users\yunqin\AppData\Roaming\Typora\typora-user-images\image-20210429123549298.png) + + ```javascript + let minNum = 20; + let maxNum = 90; + 获取20--90之间随机整数; + + // 第一步:0~maxNum之间的整数 + parseInt(Math.random()*maxNum) + parseInt(Math.random()*10) + 8 + + + //第二步: minNum ~ (maxNum+minNum)之间的整数 + parseInt(Math.random()*maxNum) + minNum + + //第三步: minNum ~ maxNum之间的整数 + parseInt((Math.random()*(maxNum-minNum)) + minNum + 乘以两数之差,加上min; + + + function randInt(minNum, maxNum){ + return parseInt((Math.random()*(maxNum-minNum))+ minNum) + } + + ``` + + > 如果需要做到像python那样闭区间, 需要对(maxNum-minNum) + 1 + + + + > ![image-20210429123814681](C:\Users\yunqin\AppData\Roaming\Typora\typora-user-images\image-20210429123814681.png) + > + > ![image-20210429124634641](C:\Users\yunqin\AppData\Roaming\Typora\typora-user-images\image-20210429124634641.png) + > + > + + + +- 匿名函数 + + ```javascript + (function(minNum, maxNum){ + console.log(parseInt(Math.random()*(maxNum-minNum)) + minNum) + }) + + ``` + + - 调用匿名函数 + + ```javascript + //调用 + (function(minNum, maxNum){ + console.log(parseInt((Math.random()*(maxNum-minNum))+ minNum)) + })(20,90) + + ``` + + image-20210429125417013 + +- 构造函数 + + 略 + +# 课后作业 + +- 安装JS的运行环境 +- 练习变量和函数的声明 + + + -- Gitee