华清远见重庆中心-JS个人总结

 


关于js的个人学习部分总结


1. 部分API 

(一)模拟弹窗:alert

`alert('hello world!')`

 

(二)确认对话框:confirm

`confirm('你确定吗')`//弹出窗口会有两个按钮

 

(三)弹窗输入框:prompt

`prompt('请输入姓名')`

 

(四)获取元素的方法

1.查询一个指定选择器的元素:document.querySelector

document.quertSelector('.box')
//只能查询到一个元素,如果有多个满足条件的元素,只会查询到第一个。

2.查询到所有指定选择器的元素:document.querySelectorAll

document.querySelectorAll('.box')
//可以查询到多个满足相同条件的元素。

3.通过id查询元素:document.getElementById

document.getElementById('idName')
//通过id名查询元素,全局id名是唯一的,所有只能查询到一个元素。

4.通过类名来查找元素:document.getElementsByClassName

document.getElementByClassName('.box')
//通过类名来查询元素,可以查询到拥有同一个类名的所有元素。

5.通过标签名来查询元素:document.getElementByTagName

document.getElementTagName('div')
//通过标签体可以查询元素,可以查询多个元素。

(五)修改查询到的元素的属性值

box.id = 'myId'//改id名
box.style.color='#000'//改样式

2.Javascript 基础语法:

变量:

<script>
    // 变量
    // 变量就是存储数据的容器
    // 变量是一个可以变化的量,数据可以发生变化
 
    // js 中预留了一些代表特殊含义的英文单词,这些单词我们称为关键字
 
    // 声明变量
    // 语法:var 变量名
 
    var a; // 声明后不赋初始值 默认都为 undefined
 
    // 声明变量并赋予初始值
 
    var b = 5;
 
    // 同时声明多个变量并赋予初始值
 
    var c, d = 10, e;
 
    // 修改变量
    // 变量在存储新值之前讲完全弃用原来的值
    c = 2
 
    // 还可以使用 let 来声明变量
    // let 声明变量和使用变量的方法和 var 没有区别
    let x, y, z = 88
 
    // let 变量不能重复定义 var 变量可以重复定义
 
    // 常量
    // 恒定不变的值为常量
    // 声明时必须赋初始值 且声明后无法修改
    const g = 10
    const pi = 3.1415926
 
    // 访问变量或常量
    // 变量值存进容器以后,我们需要从容器中取出来进行使用,这个过程就叫访问
 
    console.log(b);
    console.log(g);
    console.log(pi);
 
    // 声明json对象 (或叫做朴素对象 plain objcet)
    let obj = {
        // key: value 数据格式的键值对
        // key 我们称为 键、对象的属性名
        name: '张三',
        sex: 'male',
        age: 17
    }
 
    let obj2 = { a: 1, b: 2, c: 3 }
 
    // 访问对象和对象属性
    console.log(obj)
    // 使用 . 运算符读取对象中的属性
    console.log(obj.age)
    // 使用索引来读取对应的数据
    // 站在字典的角度来看,name 就是目录,"张三" 就是目录对应的内容
    // 目录是唯一的
    console.log(obj['name'])
 
 
    // 给对象属性赋值
    obj.name = '法外狂徒'
    // 通过索引赋值对象属性
    obj['sex'] = 'female'
    console.log(obj);
 
 
    // 变量的命名规范:
    // 	1,必须以字母开头,或者使用  $ 或者 _  开头  ,不能用数字,变量名建议不要使用中文
    // 	2,小驼峰命名法:  多个单词构成的名字,第一个单词全小写,后面的首字母大写
    // 	3,为了提高代码的可读性,命名规范,见名知意
    // 	4,不能使用关键字(有特殊功能的名字:class、var、this)
 
    let _a // 下划线开头的变量一般是局部变量出现在函数中作为形式参数
    let $body // $ 开头一般是jquery对象
    let bird // 用字母开头
    let blueBird // 多个单词,首个单词的首字母小写,其余单词的首字母大写
    let simpleDateFormat
    // let const // 由于const是关键字,所以不能用作变量名
</script>

js代码的执行顺序:

<!-- 若有多个script,那么从上而下依序执行 -->
    <script>
        console.log('hello world')
    </script>
 
<script>
    console.log('next script')
 
    // 在同一个script标签中,js的执行顺序
 
    // 以一句话为单位,基本顺序:从上到下,从左到右,每句话用分号隔开“;”
 
    console.log('this is a'); console.log('this is b'); console.log('this is c');
    console.log('this is d'); console.log('this is e'); console.log('this is f');
 
    // 若代码中每一行只有一句js,那么句尾的分号可以省略
    console.log('这句话没有打分号')
 
    // 赋值运算的顺序: 先执行赋值符右侧代码,再赋值给左侧
    let a = 3 + 4 * 2
 
    console.log('a: ', a);
 
    // 函数调用顺序
    let fn1 = (x, y, z) => {
        console.log(x)
        console.log(y)
        console.log(z)
        return x + y + z
    }
 
    let fn2 = () => {
        return 1
    }
 
    let fn3 = () => {
        return 2
    }
 
    // debugger 的作用:可以给代码加断点(breakpoint),程序运行到断点处,会停下来,开发人员可以查看此时变量的值,且可以手动一步一步运行程序进行调试
    console.log('debugger前');
 
    debugger
 
    console.log('debugger后');
 
    // 以下代码执行顺序:
    // 从左到右执行,若存在函数,先执行函数
    // 若在执行的函数中存在其他函数,例如下面的fn1的调用,那么会先执行内部的函数,如 fn3 fn2,最后执行 fn1
    c = fn2() + 4 + fn1(fn3(), fn2(), 11)
 
</script>

3.数据类型

BigInt:

<script>
    // BigInt 长整型
    // 用来描述一个位数非常长的整型数字
    let a = 1n;
    console.log(a);
    console.log(typeof a); // => bigint
 
    // bigint 类型的数只能和另一个 bigint 类型的数进行运算
    // 否则会抛出异常
    console.log(124n / 2n);
</script>

Boolean:

<script>
    //  boolean 布尔型数据
    // 该类型数据用于描述对错真假,只有两个值 true(真) false(假)
    let a = true
 
    // 判断数据类型
    console.log(typeof a); // => boolean
</script>

 Null:

<script>
    // null 空类型
    // 空类型唯一的值就是 null
    // null的含义:用来代表对象类型的空引用(空指针)
 
    let a = null
 
    console.log(a); // => null
 
    // 由于 null 代表的是 引用地址(指针) 又因为 js 把引用地址理解为对象,所以此处输出 object
    console.log(typeof a); // => object
</script>

Object:

<script>
    // Object 类型
    // 对象是一组数据的集合
    // 所有能被构造的(包含constructor构造器)类型都是对象
    // 所以 函数 数组 本质上也是对象
 
    // 朴素对象    也叫做 json 对象
    let obj = {
        name: '张三',
        sex: 'male',
        age: 17
    }
 
    // 什么是 json?
    // json 是 js 的轻量化数据结构
 
    // json 文件特点
    // 1.json 文件中,根节点只能有一组 {} 花括号或 一组 [] 方括号
    // 2.属性 key 必须由双引号包裹 value 若是字符串,则必须是双引号
    // 3.每个属性由逗号隔开,最后一个属性后面的逗号必须省略
 
    // 那么如何声明一个 json 对象呢?
    // 1.直接使用json格式
    let user = {
        "name": "张三",
        "sex": "男",
        "age": 17
    }
 
    // 2.key 不包含空白符和其他特殊符号时 可以不加引号
    user = {
        // 字符串可以不用双引号
        name: '张三',
        sex: 'male',
        age: 17
    }
 
    let name = '法外狂徒男枪'
    let sex = 'other' 
    let age = 17
 
    // 3.变量名若和对象的属性名相同,则可以省略 如下:
    user = {
        // 完整写法
        // name: name,
        name,
        sex,
        age
    }
    console.log(user);
 
    // 数组和函数都属于对象类型
    let arr = [1, 2, 3]
    function fn() { }
    console.log(typeof arr);
    console.log(typeof fn);// => function 虽然 typeof 检测函数结果为 functiong 但由于函数包含constucktion
 
    // 学习面向对象的时候再介绍类实例
</script>

 String:

<script>
    // String 字符串类型
    // 将很多的字符串起来就是字符串
 
    // 可以使用单双引号来定义字符串
    let str = 'hello world'
    console.log(typeof str);
    str = ''// 空字符串
    console.log(typeof str);
    str = "hello world"
    console.log(typeof str);
 
    // 什么叫转义?
    // 转变字符原有的含义就成为转义
    // 转义后的字符就是转义字符
    // 常见转义字符:\n 换行  \t 制表符
    str = '你好\n世界'
    console.log(str);
    str = 'hello\tworld'
    console.log(str);
    // 单引号的字符串显示单引号的方法
    str = 'ac\'dc'
    console.log(str);
    // 双引号的字符串显示双引号的方法
    str = "ac\"dc"
    console.log(str);
    // 通常可以在双引号中直接书写单引号
    // 单引号的字符串中直接书写双引号
    str = 'abc"d'
    console.log(str);
 
    // 若两个值通过加法运算符连接,任意一个值为字符串类型,则加法运算符会直接进行拼接字符串
    let a = 'hello',b = 123
    console.log(a + b);
 
</script>

 Symbol:

<script>
    // mdn数据类型:
 
    // Symbol 的意思为符号,专用来创建类中的匿名属性或函数
 
    // Symbol.for Symbol.keyFor 可以访问全局Symbol注册表
    // 全局注册表上可以存放全局可访问的 Symbol 值
 
    // Symbol 作为 key 声明的对象属性 无法被枚举
    // Symbol 作为 key 声明的对象属性 只能通过相同的 Symbol 值访问
 
    // 定义一个Symbol类型的值
    let s = Symbol()
    let s2 = Symbol('abc')
 
    console.log(s);
    console.log(s2);
 
    class A { }
 
    let a = new A
    for (const key in a){}
</script>

 Undefined:

<script>
    // undefined 未定义类型
    // 一个变量声明后不赋值,则它的值为 undefined
    // 未定义类型中只有一个值叫做 undefined
 
    // let a = undefined
    let a
    console.log(typeof a);// => undefined
 
    a = 123
    console.log(typeof a);
 
    // 赋值 undefined
    a = undefined
    console.log(a);
    console.log(typeof a); // => undefined
</script>

Number:

<script>
    // 数字类型用于描述数字
    let a = 234
    // 代表无限大的数字,是数字类型的值
    a = Infinity
    // 代表不是数字,是数字类型的值 NaN(Not a Number)
    a = NaN
 
    console.log('abc' / 123);// 运算结果不是数字 所以显示 NaN
 
    // 有时需要判断一个值是否是NaN
    // 可以使用以下方法
    // 如果是NaN则返回true,否则返回false
    console.log(isNaN(a));
 
    // 浮点数
    a = 0.618
 
    console.log(typeof a);
 
    // 科学计数法
    a = 3e3
    a = 3e-3
 
    console.log(a);
 
    console.log(typeof a);
 
    // 单双精度浮点数是什么意思
    // 单精度浮点数就是32位的小数
    // 双精度浮点数就是64位的小数
</script>

序列化和反序列化:

<script>
    // 序列化和反序列化是什么?
    // 序列化就是将对象转换成字符串
    // 反序列化就是将字符串转换成对象
 
    let obj = {
        name: '张三的母亲',
        sex: 'other',
        age: 40
    }
 
    // 序列化
    let str = JSON.stringify(obj)
    console.log(str);
 
    // 通过json格式声明一个字符串
    str = '{"name": "英雄的母亲","child":"张三","score": 88,"isOk": false}'
    // 反序列化
    obj = JSON.parse(str)
    console.log(obj);
</script>

数据类型的转换:

<script>
    // 不同类型之间的数据是可以互相转换类型的,这个过程叫数据转换
 
    // 数据转换的方法分为两种:显式转换,隐式转换
    // 显式转换:在代码中有明确的代码用于转换类型
    // 隐式转换:在代码中没有明确的代码用于转换类型
 
 
    // Boolean转换成其他类型
    let b = true
    // 转换数字
    b = Number(b)
    // 除了 Number 以外,还能使用 parseInt parseFloat 进行转换
    console.log(b);// => 1
    b = false
    b = Number(b)
    console.log(b);// => 0
 
    // true 转换数字为 1,false 转换数字为 0
 
    // 转换成字符串
    b = true
    b = String(b)
    console.log(b);// => true 的字符串
    b = false
    b = b + ''// 连接字符串时,js 会自动转换数据格式为字符串,这是一个隐式转换
    console.log(b);// => false 的字符串
 
 
    // 数字类型转其他类型
    let num = 123
    // 转boolean
    num = Boolean(num)
    console.log(num);// => true
    num = 0
    num = Boolean(num)
    console.log(num);// => false
 
    // 数字为0 结果为false,否则为true
 
    // 转字符串
    num = 1314
    num = String(num)
    console.log(num);// => 1314
    console.log(typeof num);// => String
 
 
    // 字符串转其他类型
    let str = 'hello world'
    // 转 boolean 值
    str = Boolean(str)
    console.log(str);// => true
    str = ''
    str = Boolean(str)
    console.log(str);// => false
 
    // 转空字符串为 false 其余为 true
 
    // 转数字
    str = 'hello world'
    str = Number(str)
    console.log(str);// => NaN
    str = '6e+2'
    str = Number(str)
    console.log(str);// => 600
    // 加法运算符直接写在字符串前,可以产生转换成数字的效果
    str = '6e+2'
    str = +str
    console.log(str);// => 600
 
    // 若字符串代表的是合法数字则转换为对应数字 否则为NaN
 
 
    // 对象转其他类型
    let obj = { a: 1, b: 2 }
    // 转 boolean 值
    obj = Boolean(obj)
    console.log(obj);// => true
 
    obj = null // 此处赋值 undefined 效果一样
    obj = Boolean(obj)
    console.log(obj);// => false
 
    // 变量是 null 或 undefined 时 转换结果为false
    // 对象只要存在 结果就为 true
 
    // 转数字
    obj = { a: 1, b: 2 }
    obj = Number(obj)
    console.log(obj);// => NaN
 
 
    // 转字符串
    obj = { a: 1, b: 2 }
    obj = String(obj)
    console.log(obj);// => [object Object]
    // 对象强转字符串结果始终为 [object Object]
 
    // 若希望将对象转换成字符串后能够查看其数据,则可以使用序列化
</script>

Reflect:

<script>
    // Reflect 反射
    // 反射是用来操作对象的方法
 
    // 文档:
 
    let obj = { a: 1, b: 2 }
 
    // obj.c = 3
    // obj['e1_!'] = 4
 
    // 定义对象属性
    // 作用和 Object.defineProperty 相同
    // Object.defineProperty(obj, 'c', {
    //     // 属性值
    //     value: 3,
    //     // 是否可写
    //     writable: false
    // })
 
    // 第一个参数:要定义属性的对象
    // 第二个参数:要定义的属性名称
    // 第三个参数:配置对象
    // 默认情况下用此方法添加的属性值是不可修改的
    Reflect.defineProperty(obj, 'c', {
        value: 5,
        writable: true
    })
 
    // 删除属性
    // 等价于 delete obj['b']
    // delete obj.a
    // delete obj['b']
    // 第一个参数:要删除属性的对象
    // 第二个参数:要删除的属性名称
    Reflect.deleteProperty(obj, 'a')
 
    // 返回对象的所有 key 数组
    let r = Reflect.ownKeys(obj)
    console.log(r);
 
    // 判断对象是否存在某属性
    // 第一个参数:要判断属性是否存在的对象
    // 第二个参数:要判断是否存在的属性名称
    r = Reflect.has(obj, 'e')
    console.log(r);
    r = Reflect.has(obj, 'c')
    console.log(r);
 
    // 判断一个对象是否存在某属性的其他方法
    // 1. 使用if的隐式转换
    if (obj.e) {
        // obj.e 若等于以下值:null undefined '' 0 ==> false  其余情况为true
        // if 语句将隐式转换数据为 boolean 值
        // 存在e
        console.log('e存在');
    }
    // 2. 使用typeof
    console.log(typeof obj.e);
</script>

 

 

数据类型转换

数据转换的方法分为两种:

(1)显示转换:在代码中有明确的代码用于转换类型;

(2)隐式转换:在代码中没有明确的代码用于转换类型。

1.Boolean 类型转换为数字

   true 为 1,false 为 0

b = Number(b)
    console.log(b); // => 1
    b = false
    b = Number(b)
    console.log(b) // => 0

//也可以使用 parseInt parseFloat 进行转换;

转换为字符串

 console.log(b);
    b = String(b)
    console.log(b); // => true 的字符串
    b = false
    b = b + '' // 连接字符串时,js会自动转换数据格式为字符串,这是一个隐式转换
    console.log(b); // => false 的字符串

 

2.数字类型转换其他类型

   除了0以外的所有数字转换后都是true,0为false;

let num = -123
num = Boolean(num)
num = 1314
num = String(1314)
console.log(num); // => 1314

3.字符串转其他类型
   空字符串为false,其余字符串都为true;

let str = 'hello world'
str = Boolean(str)
console.log(str); // => true
str = ''
str = Boolean(str)
console.log(str); // => false

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值