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
+ ```
+
+ 
+
+ ```
+ 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]
+
+
+ ```
+
+ 
+
+ 
+
+ 超过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
+
+ ```
+
+ 
+
+ - 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的基础上,往上封装;
+
+ > 动态弱类型:
+ >
+ >
+ >
+ > 监听点击事件:
+ >
+ > 
+ >
+ > 啊啊
+ >
+ > dad
+
+
+
+
+
+# 运行环境
+
+- 浏览器页面内
+
+ > 浏览器为什么可以直接运行js
+
+ 在浏览器内核中提供了JS引擎, 所以可以直接执行JS. 该JS引擎只是浏览器的一个线程, 用来执行js.
+
+- 浏览器页面外
+
+ 本质就是封装了浏览器内核当中的JS引擎, 达到了浏览器外运行JS的目的.
+
+ - Node.Js
+ - PyV8 单线程;如何性能优化:携程、异步;as io
+
+# 环境搭建
+
+- 安装Node.js
+
+ ```
+ https://nodejs.org/en/
+ ```
+
+ 
+
+- 安装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"
+ ```
+
+ 
+
+# 函数声明
+
+- 普通函数
+
+ - 关键字是function
+
+ - 函数体在代码块`{}`中声明
+
+ - 每一句语句结束以`;`结尾
+
+ 
+
+ ```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
+
+
+
+ > 
+ >
+ > 
+ >
+ >
+
+
+
+- 匿名函数
+
+ ```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)
+
+ ```
+
+
+
+- 构造函数
+
+ 略
+
+# 课后作业
+
+- 安装JS的运行环境
+- 练习变量和函数的声明
+
+
+
--
Gitee