初识js
什么是js
JavaScript简称js,是一门编程语言,可以在浏览器上运行。写法比较自由~~~可以用来写网页,做游戏,做app…
js的三种写法
1)内部写法:把js写在html文件中 script标签中
2)外部写法:把JS写在JS文件中,然后在html文件中通过script标签引入 写项目时通常会把JS写在一个单独的文件中
3)内行写法:把JS代码写在开始标签中,当成开始标签的属性
js的基本语法
1)js是区分大小写
var a = 1; var A = 2;
是不一样的
2)忽略空白符(如:空格 换行 tab)
3)语句分号可加可不加
4)注释// 单行注释 /* 多行注释 */
js变量
在 JavaScript 中创建变量被称为“声明”变量。可以通过 var 关键词来声明 JavaScript 变量
var name
声明之后,变量是没有值的(underfind),如果需要赋值,需要使用等号
运算符
- =叫赋值运算符:
- 1+1 + 加号 左结合性
- = 右结合性 从右向左
- i++ 先返回值,再加一
- ++i 先自加1再返回值
i++和++i单独使用效果一样
运算符的先后顺序
变量的分类
1)全局变量
2)局部变量
只要把变量写在函数里面就是局部变量,只要写在函数外面就是全局变量。
区别
1)全局变量不止在函数内部能访问到
2)局部变量只能在函数内部访问到
js的数据类型
1.基本数据的类型:
number 数字
string 字符串 ”“ ‘’ JS中不分字符和字符串 都叫字符串
boolean true false 布尔类型
undefiend 没有值
null 没有值
2. 引用数据类型:
object 对象
array 数组
function 函数 在JS中函数也是一种数据类型
数据类型的特点
1.number对应的值有无数个
2.在JS中number数据类型不分整数和小数 都是number
3.可以通过typeof查看一个变量值的数据类型
4.infinity无穷大 number.max(mini)_value 数字型中的最大(小)值
5.number可以通过不同进制显示 2进制 8进制10进制 16进制
6.NaN ,Not a Number 不是一个数字
7.JS中不要对小数运算 要运算先转成整数
8.数组的下标是从0开始的var arr [1]; console.log(arr[0])
js中的数据类型转换
1.隐式转换
2.强制转换
转换为数字型
1.ParseInt(变量),可以把字符型转换为数字型,得到的是整数
2.ParseFloat(变量),可以把字符型转换为数字型,得到的是小数
3.number
4.利用算数运算-,*,/隐式转换
布尔类型转换
在JS中,下面的值转成false,其它值都转成true:
0 , -0
“”
undefiend
null
预编译
JS代码在执行时分两个阶段:
1)预编译
2)代码执行
定义变量和声明变量
定义变量:var a = 110; 定义 = 声明+赋值
声明变量:var a = 110; 说的声明仅仅是说var a 后面是赋值
提升
1.把加var的变量进行提升 变量声明会提升 变量的赋值是不会提升
提升到了代码段最前面
2. 把使用function声明的函数进行提升 提升的是整个函数声明
js中提升过一次之后就不会再提升第二次了
EC执行上下文( Execute Context): EC的作用:给代码提供数据
代码分两类:
全局代码 函数外面的代码叫全局代码
函数代码 一个函数就是一个局部代码
全局执行上下文:
全局代码在执行时时,就会产生全局的EC。 EC(G)
局部执行上下文: 函数代码在执行时,就会产生局部的EC。调用一个函数就产生一个EC,调用几个函数,就产生几个EC。
window是一个全局对象 只要是一个全局变量或全局函数都会挂载到window上(GO)
EC栈:
栈:杯子
每产生一个EC就会放到杯子中
栈:先放进去的后出来
代码执行在EC中时先给形参赋值,再看提升
举个例子:
<script>
console.log(n);//有var 所以会提升 var n 但是没有值 所以是 undfind
var n = 100; //var 声明的变量 已赋值
console.log(n); // n=100
console.log(window.n); //window 是一个全局对象
m = 200;//全局变量
console.log(m);//GO中找
console.log(a);//a is not defind
</script>
let
-
let声明的变量没有提升
-
let配合{}可以形成作用域
-
使用let声明的变量不会挂载到GO上
-
使用let不能重复声明
代码的执行:一行一行执行
仅代表个人观点