27 JavaScript的引入&注释&弹窗&变量常量&数据类型及转换&内存&垃圾回收
JS的引入:
1 内部引入
- 绑定元素事件如onclick=""
- 绑定锚点如href="JavaScript:void(0)"
- script标签引入,注意:如果标签放在head里面,不能操作放在body里面的scrip标签的内容
2 外部引入
sript标签src属性引入,优先级比css高,位置一般在body内或者head到body之间,如果放置于body与html之间,或者html之外,会被自动修复置于body之内
JS注释:
- 单行://
- 多行: /**/
- html注释:单行多行都是<!-- -->
- css注释:单行多行都是/**/
JS弹窗:
- alert:弹出框,无返回值
- confirm:确认框,返回true/false
- prompt:请输入你的年龄,有2个参数1个返回值,1参是问题,2参默认结果,点击确认会返回输入结果
弹窗弹出时,代码会暂停执行直到弹窗关闭
JS变量:
- 1 小写字母开始,每个单词的首字母大写
- 2 变量不能用关键词和保留字
- 3 变量尽量不要定义window属性名,ES5中全局变量都被设置在window的属性中(可能会数字变字符),起名时先看下是否window对象的属性名称一致
- 4 临时变量或者参数使用下划线开始 var _time=20;
变量的连等赋值: var a = b = 20; 先给a赋值,再给b赋值
JS常量:
一般用大写和下划线_连接,使用const关键字定义
常量定义后的对象不能被清除,常量对象可以被修改属性,但常量对象和常量基本数据类型不能被赋值,因此常量不能用null清除引用
<script> const value = 1; const obj = { x : 1}; // value = 2;//报错:Assignment to constant variable. obj.x = 2; console.log(obj);//{x:2} obj = 2;////报错:Assignment to constant variable. </script>
JavaScript共有7种数据类型:
- number
- string
- boolean
- null
- undefined
- object
- Symbol
分类:
基本数据类型:
undefined、null、number、string、boolean是原生JS5种基本数据类型,Symbol是ES6之后加入的基本数据类型
复杂数据类型:
object是复杂数据类型
数据类型的存储:
前5种存在栈中,栈中变量名存储的是值,object存在堆中(对象数值类型也存储在堆中),栈中变量名存储的是堆中的地址
obj1 = obj;
obj1拿到的是obj的地址,不是地址中的内容,相当于拿到的是一把钥匙,而不是箱子.假设这个地址是#aaaaaa,那么开启这把箱子的钥匙就有两把,分别是obj和obj1,任何一把都能改变箱子里的内容,箱子里的内容一旦改变,那么任何一把钥匙在此后打开箱子后看到的都是改变后的值
此时obj对象的属性改变,obj1这把钥匙所能打开的箱子中的内容也改变,打开箱子之后看到的是改变之后的内容。
综上:
不论是对象还是前5原始数据类型,它们的变量名都存储在栈中
前5种基本数据类型的变量名在栈中存储的是值,但是它们的方法是通过相应的对象数据类型调用的,所以存取是栈调用,调用方法是堆调用,即对象调用
对象存储在堆中,栈中存储的对象变量名存储的是堆中的地址,堆中的属性改变,但是地址并不改变
数据类型
var obj = {x:1}; var obj2 = obj; obj2.x = 3; console.log(obj2 == obj);//true console.log(obj2 === obj);//true obj = {x:1};//{x:1}是个新对象,与上个对象引用地址不等 console.log(obj2 == obj);//false console.log(obj2 === obj);//false
JS内存管理
JS内存泄漏:
JS垃圾回收
数据类型的转换: