JS复习笔记2(变量进阶)

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"放在函数内则严格模式只对该函数起作用
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容