代码执行顺序:从上往下,一行一行的执行(也叫一个模块一个模块的执行)
变量的提升(它不是变量的功能,而是浏览器的功能)
js代码如何执行?
js代码执行前,浏览器会给他一个全局的环境 叫window,在window(全局作用域)下浏览器找到所有的带var和function的关键字,然后他们分配内存的地址,不管你赋值没赋值,浏览器告诉所有的子模块,这个东西存在了,这种能力叫变量提升。
对变量定义的方式
一个是定义的常量var
一个是定义的方法function
我们的载体是浏览器
计算机通过地址查找的
数据
变量的值 一个是字符串 (带引号)
一个是数字(不带引号)
不管是数字还是字符串,后面的值统统称为数据
js数据类型有( 跟变量的值有关)
字符串 数字 数组 json 对象 布尔 null undefined 函数 (分为两大块 基本和复和)
运算
1.四则运算 (加,减,乘,除)法则(先乘除 后加减 有括号先算括号里面的)
2.逻辑运算: 或(||) 且(&&) 非(!) 其结果是布尔 (值为ture 和false 只有对与错)
a 或 b ( a也行 ,b也行)
a 且 b (a和b)
a 非 b (不是a就是b)
3.比较运算 > 、 >= 、 < 、 <= !(取反)
==(双等号 就是所谓的等号)因为“=”是赋值 ===(全等)数据类型和值都一样 !==(不全等于)
==也有隐式转换的能力
function 会有一个子模块 内部可以用外部,外部不可以用内部
解释console.log(a) 结果为undefined ?
var a="hello world"
js代码执行前浏览器会给一个全局作用域(window)
window分两种模块 一个是储存模块 一个是执行模块
储存模块找到所有的 var function的关键字 给这些变量添加内存地址
执行模块代码从上到下执行,遇到变量 就会去储存模块查找有没有赋值 赋值了就是后面的值 没有赋值就是undefined 没有结果就是 (is not undefined)
注意储存模块没有赋值的情况
通俗讲 没定义 (var function)为 is not undefined
没赋值 (以上列将a="")undefined