JS数据、变量、函数

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 = 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中。

据讲课内容整理

猜你喜欢

转载自blog.csdn.net/sd6022/article/details/107430804