JS中的数据
数据的简单认识:
软件打开后,界面上有很多的数据,也叫状态。状态(数据)可以保存在两个地方:内存和硬盘。
JS中的数据类型:
主要指的事变量的数据类型,包含基本数据类型和应用数据类型
基本数据类型:
number 数字 var a = 110; int a = 110;
string 字符串 ”“ ‘’ JS中不分字符和字符串 都叫字符串
boolean true false 布尔类型
undefiend 没有值
null 没有值
引用数据类型:
object 对象
array 数组
function 函数 在JS中函数也是一种数据类型
数据类型补充
基本数据类型存储在栈中 引用数据类型存储在堆中
undefined数据类型
是一个数据类型,其数据类型对应的值是undefiend
一个变量没有赋值,它的值和类型都是undefined
一个函数没有返回值,也就是返回undefined
boolean数据类型
值就两个 true false
JS是区分大小写。所以true 和 True 不同。
string数据类型
对应的数据有无数个
使用‘’ “”把字符串包起来,单双引号不能胡乱嵌套。
number数据类型
对应的值有无数个,存在最大值 和 最小值,可以使用不同进制。
不分整数和小数,但不能用小数运算,否则得到的结果不对 ,需要要运算时先转成整数
Number叫类,也叫构造器,也叫函数
函数也是数据 数据类型是引用数据类型object
数据的存放
内存空间地址:
就是一块内存空间的地址,可以通过地址操作它对应空间中的数据,使用地址来操作非常不方便,指针。
内存中的数据,断电数据就没了,硬盘上的数据断电是不会丢失。
项目运行起来,只有把数据加载到内存中,才使用使用数据。
内存分堆内存和栈内存
在JS中,基本数据类型存储在栈中 引用数据类型存储在堆中
数据类型转化
隐式类型转化:静悄悄地,不知不觉地就进行了类型转化
强制类型转化:写代码进行转化
在JS中,下面的值转成false,其它值都转成true:
0 、 -0 、 “”(空白)、undefiend 、 null
JS中的变量
变量:
变量就是内存中的一个空间。
变量名:内存空间的别名 对变量名的操作就是对内存空间的操作
变量值:存储在内存空间中的状态(数据)
变量的分类和特点:
1)全局变量——————全局变量在函数内外部都能访问到
2)局部变量——————局部变量只能在函数内部访问到
两者的分界点是:函数
只要把变量写在函数里面就是局部变量,只要写在函数外面就是全局变量。
定义的变量:
var a = 110; // 定义了一个变量 变量的名是a 变量的值是110; var 关键字 a变量名标识符
运算符
关系运算符
关系运算符得到的结果为false或true,返回的就是布尔值。
== 等于 判断两侧的数是否相等,
> < 大于和小于
+ 123+abc +叫运算符 123操作数 "abc"也叫操作数
一个运算符如果有两个操作数,这个运算符叫二元运算符,也叫二目运算符,还叫双目运算符 。如果一个运算符只有一个操作数,这个运算符叫一元,单目运算符。
函数
函数的定义
function f() {
console.log("hello")
}
f叫函数名 ()是函数特有的标识 {} 叫函数体
定义 = 声明 + 赋值
函数的调用
f(); // 调用函数时,就会把函数体中的代码都执行了
函数的返回值
1、函数的返回值是返回到了函数调用处
function f() {
return 666;
}
var a = f(); // 函数调用
console.log(a); // [666] 得到的返回值赋给a
console.log(f()); // [666] f()得到的就是函数的返回值
2、一个函数如果没有返回值,默认返回undefiend
function f(){
}
console.log(f()); // undefined
函数传递数据
function f(a,b) { // a b叫形式参数 形参就是函数内部的局部变量
return a+b;
}
var r = f(1,2); // 1 2叫实际参数 实参函数调用的过程就是实参向形参赋值的过程
console.log(r); //[3]
JS代码在执行时的两个阶段
预编译
把加var的变量进行提升(提升到了代码段最前面) 变量声明提升但赋值不会。
把使用function声明的函数进行提升 提升的是整个函数声明
定义变量和声明变量:
定义变量:var a = 110; // 定义 = 声明+赋值
声明变量:var a = 110; // 说的声明仅仅是说var a 后面是赋值
赋值:赋值就是把栈空间的数据拿出来赋给相关变量,一定是栈空间的数据(包括指向堆地址),不是堆空间的的数据。
代码的执行
一行一行执行
执行上下文
EC (Execute Context)的作用:给代码提供数据
全局执行上下文:
全局代码在执行时,就会产生全局的EC。 EG(G) [G global] 局部执行上下文:
函数代码在执行时,就会产生局部的EC。调用一个函数就产生一个EC,调用100个函数,就产生100个EC.
全局代码 函数外面的代码叫全局代码
函数代码 一个函数就是一个局部代码
EC栈:
栈:杯子 每产生一个EC就会放到杯子中,说白了,就是杯子中放鸡蛋。
特点:先进后出
补充
window是一个全局对象 只要是一个全局变量或全局函数都会挂载到window上
VO variable object活动对象,
存放怎局部代码(函数)产生的栈里面,数据同时存放在GO中
GO global object 全局对象
AO 在函数内部声明的对象,数据不存于GO中。
据讲课内容整理