第一章 简述
总体逻辑
1 存储数据
2 调出数据
编程语言是用合适的结构来储存数据和合适的算法来管理数据。
浏览器:
1 解析
2 执行
提前声明完,达到先声明后赋值。
规范
1 js一般放在下边,以免造成后边的代码加载不出来
2 分号要加。很多语言,工具不加分号是会报错的。
3 函数体内需要声明,便于调用协作。
特性
1 多端同时运行,切换端到端只需要进行相对小的调整。
2 前后台js都可以,前台使用js,后台使用node.js。
3 js每年更新发布。
插件
1 liveserver--提供实时更新
2 chrome--浏览器 con+shift+i 调控制台
加载方式
嵌入 外联 内联
注释
1注释的效果是让一段代码失效,并且是暂时失效。
2所以灵活使用注释非常好用,方便调试。
3对晦涩的代码进行声明,在后期维护非常有用。
★变量声明
声明本质上也是一种接收
1 var 变量提升
2 let TDZ √临时锁区,必须在声明后使用 建议使用
3 const TDZ √临时锁区,必须在声明后使用 建议使用
const定义常量,常量名为大写。
const定以后在同作用域内不可修改变量内存地址的引用。
使用let 和 const 有利于代码思维养成,即先声明后赋值。
包括两部分: 声明 和 赋值
规范:字母数字下划线
共同点: 1 函数体内均可访问外部变量/全局变量
2 内部变量和全局变量名称一致但未声明的,会重新改变全局变量。(造成全局污染)。
3 函数体内部声明后,即为函数体私有变量,不影响全局变量。
未声明变量直接使用会直接污染全局,尽管可以使用。
每次声明变量,js会在内存中开辟一段空间来储存数据。
js可一次声明并定义多个变量。
通过变量名,js可以从内存中调用其数据。
js中,变量类型根据变量值的不同而不同(弱类型)。
解析器在执行代码前会对代码进行分析,将一些代码变量提升。
调试代码
console.log
typeof
块作用域//关于var
1 花括号:{} 一个花括号内部即一个块
如果{}内部使用了var定义,那么在{}外部依然可以访问。
如果{}内部使用let/const定义,在{}外部访问不到。
2 闭包内部开放接口。
通过使用接口来减少冲突。
window对象
普通声明变量会直接影响window,其结果是有可能会人为污染已定义的方法
var声明会将其放入window属性,和window连接
let声明的值不会影响到window,是分离开来的。
var的重复声明不会提示和报错、
let/const 在同一作用域内重复声明会发出提示
引用
在对象中,创建一个引用会在内存地址中开辟一个较大的内存空间。
修改对象中的值是在已有内存空间内进行修改,不会改变内存地址。
变量冻结
(可使用)"use strict"; 开启严格模式,当使用object.freeze锁定变量而代码中尝试修改的时候会在console里报错。
Object.freeze() 锁定变量
引用类型
传址: var a = b;
传值: var a = 1;
null与undefined
null是null
undefined是undefined
严格模式
作用域:当前作用域和下级作用域
一句话,写代码的时候使用严格模式。