JS学习
关于js:
js 全名javascript,但是跟java没有任何关系。
js是一门编译语言。
js的运行环境不只浏览器,还可以在其它的环境中支行。
js可以做很多工作:
1.开发网站
2.小程序和页面游戏开发
3.手机app开发
4.写后端 node.js
5.嵌入式
6.区块链
js的写法:
1)js可以写在HTML文件的script标签中(内部写法)
2)把JS代码写在开始标签中,当成开始标签的属性(行内写法)
3)写到JavaScript文档中(外部写法)
js基础语法:
1)JS是区分大小写,如: var a = 1; var A = 2;
2)忽略空白符(空格 换行 tab)
3)语句中分号可加可不加,平时写的时候最好加上分号
4)注释 单行注释 多行注释 注释是给程序员 的
5)标识符 和 关键字 var a = 110; var是关键字 a是变量名标识符
变量:
变量 由 变量名和变量值组成
变量名是变量值所在存储空间的别名,变量值是存储空间中存储的数据(也叫状态)
如何定义变量:
var a = 110; // 定义了一个变量 变量的名是a 变量的值是110;
var a=1;
var b=2;
var c=a+b;
在计算机中,= 叫赋值运算符
变量分类
局部变量和全局变量
只要把变量写在函数里面就是局部变量
写在函数外面就是全局变量
全局变量和局部变量有什么特点:
1)全局变量 可以 在函数内部访问到
2)局部变量 只能 在函数内部访问到
####为什么需要数据类型:
为了更加合理使用内存空间,基本上所有的编程语言中都提出
数据类型的概念,研究针对不同的数据,分配不同的空间。
JS中的数据类型:
基本数据的类型:
number 数字 var a = 110; int a = 110;
string 字符串 ”“ ‘’ JS中不分字符和字符串 都叫字符串
boolean true false 布尔类型
undefiend 没有值
null 没有值
引用数据类型:
object 对象
array 数组
function 函数 在JS中函数也是一种数据类型
######代码段:
一个script标签就是一个代码段
#####初步了解执行上下文
script代码分为预编译和执行两个阶段
预编译会把全局变量提升
提升:var 定义的变量 以及 函数 f() 都会被提升到执行文档的前面。
全局变量放在栈中 对应执行上下文EC(execute context)的VO(var object)中
相对应的 局部变量(函数体)中的变量提升后 放在函数体的执行上下文中的AO(active object)中
函数题的数据存放在堆中
GO(global object 全体对象)中的对象都可以被 window调用
GO包含了全局变量和一些默认的对象
**注意:**执行上下文时,应当先提升,后执行,若为被调用函数,函数内部应先提升,后给形参进行赋值,最后执行
如下图:
let定义变量,不能重复定义同一个变量,否则会报错
const 定义常量,在定义时,必须进行赋值
let与const 声明后不会跟var 声明一样提升,并且,let与const的声明不会挂载到GO中
**注意:**赋值是把栈空间中的数据拿出来赋值给别人,而不是把堆空间中的数据,引用数据类型在程序进行提升时,会生成堆空间,EC(G)中的VO中引用数据类型对应的地址即为堆空间地址,当把引用数据 obj 赋值给a时,a的值为obj 对应的堆空间的地址
如下:
var arr=[11,22];
function f(ary){
console.log(ary);
arr[0]=100;
console.log(ary);
ary=[666];
console.log(ary);
ary[0]=0;
console.log(ary);
}
f(arr);
console.log(arr);