js学习笔记

JS复习笔记1(变量和声明)

2020-03-20  本文已影响0人  XKolento

1变量介绍

变量就是对 内存地址的引用

var k; //声明
k='kolento' //赋值
//以上代码也等于如下 缩写 
var  k  =  'kolento'
//其他简写
var a=1,b=2,c=3
var a=b=c=1

变量声明赋值后会在内存中开辟一个空间存储内容,如果使用内存地址来访问赋值的 字符串非常麻烦,所以使用变量替代并且指向对应的内存地址获取内容。
注意:变量不能使用js关键字。

2.变量提升

JS代码在执行之前有一个分析的过程,这个过程会处理我们的代码,比如变量提升。

var a =  1
console.log(a)
var class = b
//结果 :在没有打印出a的情况下就报错了 
//原因:变量提升,最后一行声明提升到console.log之前 
//demo1
console.log(a)//  打印undefined
var  a= 1
//以上代码会被解析为
var a;
console.log(a)
a=1

//demo2
if(false){
  var a= 1
}
console.log(a) //打印 undefined,也是变量提升的原因

3.其他声明方式

ES6语法:let const

console.log(a) //undefined
var  a =  1  

console.log(b)  //报错 
let b  =1

const c = 100 //定义常量,常量通常不可改变
const c=200 //报错
如果const的声明赋值和修改
不在同一个块作用域下则可以修改 
const d =  1
{
  const  d  = 2  
  console.log(d)  //2
}

//使用const修改引用类型
const  config={};
config.url='www'
console.log(config) //{url:'www'}
此处并没有修改内存地址只是修改了里面 的值,所以可以修改 
image.png

let:定义变量,声明会产生一个临时的死区TDC,也就是 说必须在声明之后才能使用,没有变量提升,是块作用域 。
const:定义常量,同let一样必须先声明后才能使用。可以改变引用类型(对象 数组)的内容,但实际上内存地址没有改变。

4.作用域

a=1 
console.log(1) //打印1 全局作用域
严格模式  'use  strict' 下会报错 

for(let  i = 1;i<5;i++){  //块作用域(花括弧)
  console.log(i)
}
块作用域可以防止对全局的变量进行污染
上一篇 下一篇

猜你喜欢

热点阅读