1.window全局对象
let和var对window全局对象的影响
var web = 1 //声明的web会保存在window全局 对象中
console.log(window.web) //1
let kolento =1
console.log(window.kolento) //undefined
//window对象不会受到let声明的影响
//计算并且打印屏幕距离左侧的距离
console.log(window.screenLeft)
var screenLeft =1000 //声明一个变量与window对象中自带的重名情况下,打印我们声明的
console.log(window.screenLeft) //1000
//window对象不会受到let声明的影响
2.重复声明
var let const的区别
var a = 1
var a = 2
console.log(a) //2
let b = 1
let b = 2
console.log(b) //报错提示,不能重复声明,且只针对于同一个作用域下
const c = 1
const c = 2
console.log(c) //报错提示,不能重复声明,且只针对于同一个作用域下
3.变量冻结
使得 引用类型的变量 也无法被修改
const host={
url:'www',port:'11'
}
host.port=1
console.log(host.poort) //1
如果不想让host变量里的内容被修改,
Object.freeze(host) //冻结变量,则无法被js修改
4.传值与传址
传值(字符串 数值):在数据量较小的情况下传值,等于是在内存中新开辟一块地方复制 一份数据,针对于字符串,数字等。
传址(对象 数组):针对于数据量较大的情况,几个变量共用一块数据,由于数据较大,所以不反复复制大量占用内存控件,只传递内存地址,当数据发生改变时,全都改变。
基本类型:字符串 数值
引用类型:数组 对象
//传值
let a = 1;
let b = a;
console.log(a,b) //1,2
b = 3
console.log(a,b) //1,3
//传址
let c = {name:'kolento'};
let d= c
console.log(c,d) //{name:'kolento'},{name:'kolento'}
d.name='others'
console.log(c,d) //{name:'others'},{name:'others'}
5.null和 undefined
null:引用类型初始值
undefined:基本类型初始值
let a = 1;
let b ;
console.log(typeof a) //number
console.log(typeof b) //undefined
console.log(typeof c) //undefined,因为不存在c也不存在c的值
6.严格模式
声明方式:"use strict"
在代码污染,使用了关键字,不写var全局声明等情况下会报错。
"use strict"
function show(){
a = 1
}
show() //报错
//如果把 "use strict"放在函数内则严格模式只对该函数起作用