前言
JavaScript作为一种语言,我感觉到自己并没有能够去认真的去学习,基础知识太不牢固,这是学习方法的缺点,学习的过程中不求甚解,仅仅是为了完成任务而在学习,并不是为了学习在学习,我们现在当下要做的任务就是提高自己的学习能力,其他的一切都是次要的,一个人只有拥有了终身学习的能力才能够在以后的生活中披襟斩棘,不断向前,所以通过这次的考核我认识到自己现在需要的是在自己的节奏上面稳扎稳打,首先就是不要被别人打乱了心绪,要认识到自己的欠缺之处,然后去弥补,当然在这个过程中不要心慌意乱,要去为了学习而学习,我们的目的是获取知识而不是为了应付考试。这也应用到我们的大学生活中,我们在学校的目的是什么,是在高中的时候整天学习应付高考,还是为了锻炼自己的能力去成长。高中毫无疑问应试教育带给我们的是没有创新能力的一次筛选,因而在我们的大学过程中就与高中有了很大的区别,在大学我们拥有了很多能够自由支配的时间,在这个时间里,你的行为决定了你的人生走向。因为课堂上的知识我们已经由小学走过了这么多年,是个时候释放我们的潜能和天性了。
首先 问题总结
- var和let的区别 还有一个conest https://www.jianshu.com/p/9f7f053f7204
const和let都是在声明的块作用域中有效,但是let声明的变量可变,值和类型都可以改变,没有限制。 const 声明的是常量,其值一旦被设定便不可被更改。,所以,const一旦声明一个变量,就必须马上初始化,不能留到以后赋值
let 在块作用域中有效,有的时候,我们为了降低变量污染的风险,在块作用域中使用let来代替var,这样不会污染块作用域的外部作用域,降低 bug率,使代码更安全。
2.函数作用域和块级作用域
函数作用域:变量在定义的环境中以及嵌套的子函数中处处可见;
块级作用域:变量在离开定义的块级代码后立即被回收。
var : 在调用函数时创建函数作用域,函数执行完毕,作用域销毁。
在函数作用域中可以访问到全局作用域的变量,而全局的访问不到函数作用域的变 量;函数作用域可以在相同的作用域重复声明一个变量,存在变量声明提前(指的是变量声明之前就可以使用,只是声明之前,变量的值为 undefined
let : (用法类似var) 声明的变量仅在块级作用域内有效,离开某一代码块,该变量就会销毁不存在;let 不允许在相同的作用域内重复声明一个变量,否则会报错;不存在变量声明提前,如果在声明之前使用,则会报错。
3.JavaScript 对象是拥有属性和方法的数据
里面可以有
[图片上传失败...(image-fe17e8-1618730507776)]
4.死链接
我们经常会使用到 javascript:void(0) 这样的代码,那么在 JavaScript 中 javascript:void(0) 代表的是什么意思呢?
javascript:void(0) 中最关键的是 void 关键字, void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值。
[图片上传失败...(image-c022b-1618730507776)]
5.数组 : 使用单独变量来储存一系列的值
数组中包含对象元素、函数、数组
合并两个数组 - concat()
合并三个数组 - concat()
用数组的元素组成字符串 - join()
删除数组的最后一个元素 - pop()
数组的末尾添加新的元素 - push()
将一个数组中的元素的顺序反转排序 - reverse()
删除数组的第一个元素 - shift()
从一个数组中选择元素 - slice()
数组排序(按字母顺序升序)- sort()
数字排序(按数字顺序升序)- sort()
数字排序(按数字顺序降序)- sort()
在数组的第2位置添加一个元素 - splice()
转换数组到字符串 -toString()
在数组的开头添加新元素 - unshift()
6.JavaScript 变量
JavaScript 变量可用于存放值(比如 x=5)和表达式(比如 z=x+y)。
变量可以使用短名称(比如 x 和 y),也可以使用描述性更好的名称(比如 age, sum, totalvolume)。
- 变量必须以字母开头
- 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)
- 变量名称对大小写敏感(y 和 Y 是不同的变量)
7.JavaScript 类型转换
六种不同的数据类型都有
- string
parseInt() 和 parseFloat() 方法可以把字符串转换为数值。
- number
- boolean Boolean(布尔)对象用于将非布尔值转换为布尔值(true 或者 false)。 检查布尔值的方法 var boolean
要把任何值转换为布尔型数据,在值的前面增加两个 !! 感叹号即可,!!0 为 False,其余的均为 True。
- object
Object 构造函数创建一个对象包装器。
// 以构造函数形式来调用 new Object([value])
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object
- function
- symbol
三种对象类型
- Object
- Date
- Array
2 个不包含任何值的数据类型:
- null
- undefined
你可以使用 typeof 操作符来检测变量的数据类型。
8.null 和 undefined的区别
1、定义
- (1)undefined:是所有没有赋值变量的默认值,自动赋值。
- (2)null:主动释放一个变量引用的对象,表示一个变量不再指向任何对象地址。
2、何时使用null?
当使用完一个比较大的对象时,需要对其进行释放内存时,设置为 null。
3、null 与 undefined 的异同点是什么呢?
共同点:都是原始类型,保存在栈中变量本地。
不同点:
(1)undefined——表示变量声明过但并未赋过值。
它是所有未赋值变量默认值,例如:
var a; // a 自动被赋值为 undefined
(2)null——表示一个变量将来可能指向一个对象。
一般用于主动释放指向对象的引用,例如:
var emps = ['ss','nn']; emps = null; // 释放指向数组的引用
4、延伸——垃圾回收站
它是专门释放对象内存的一个程序。
- (1)在底层,后台伴随当前程序同时运行;引擎会定时自动调用垃圾回收期;
- (2)总有一个对象不再被任何变量引用时,才释放。
9.数据类型转换
JavaScript 变量可以转换为新变量或其他数据类型:
- 通过使用 JavaScript 函数
- 通过 JavaScript 自身自动转换
.将数字转换为字符串
全局方法 String() 可以将数字转换为字符串。
该方法可用于任何类型的数字,字母,变量,表达式:
String(100 + 23) // 将数字表达式转换为字符串并返回
Number 方法 toString() 也是有同样的效果。
(100 + 23).toString()
将布尔值转换为字符串
全局方法 String() 可以将布尔值转换为字符串。
String(false) // 返回 "false"
String(true) // 返回 "true"
Boolean 方法 toString() 也有相同的效果。
false.toString() // 返回 "false"
true.toString() // 返回 "true
typeof 我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错。
正因为 typeof 遇到 null,数组,对象时都会返回 object 类型,所以当我们要判断一个对象是否是数组时。
或者判断某个变量是否是某个对象的实例则要选择使用另一个关键语法 instanceof
对象构造器 constructor
原形与原型链
[图片上传失败...(image-ea645e-1618730507775)]
10.阻止默认事件
1.给a标签中href属性添加
2.给绑定的事件添加return false
document.getElementById("link").onclick = function (){
console.log("666");
return false;
}
3.使用event事件里的方法
document.getElementById("link").onclick = function (e){
console.log("666");
e.preventDefault();
}
阻止事件冒泡
event鼠标事件对象中stopPropagation()方法来阻止冒泡
在要阻止的对象事件中加入
my$("box3").onclick = function (event) {
console.log("里面的盒子");
//阻止事件冒泡 event鼠标的事件对象
event.stopPropagation();
}