4.1

声明变量
使用var 声明的变量会自动被添加到最接近的环境中。在函数内部,最接近的环境就是函数的局部环境;在 with 语句中,最接近的环境是函数环境。如果初始化变量时没有使用 var 声明,该变量会自动被添加到全局环境。

function add(num1, num2){
var sum = num1 + num2;
return sum;
}
var result = add(10, 20);  //30
console.log(sum);  //Uncaught ReferenceError:sum is not defined

如果省略关键字 var,那么当 add() 执行完毕后,sum 也将可以访问到:

function add(num1, num2){
sum = num1 + num2;
return sum;
}
var result = add(10, 20);  //30
console.log(sum);  //30

查询标识符
当在某个环境中为了读取或写入而引用一个标识符时,必须通过搜索来确定该标识符实际代表什么。搜索过程从作用域链的顶端开始,向上逐级查询与给定名字匹配的标识符。

var color = 'blue';
function getColor(){
return color;
}
alert(getColor());//blue
var color = 'blue';
function getColor(){
var color = 'red';
return color;
}
alert(getColor());//red
var color = 'blue';
function getColor(){
return color;
var color = 'red';//预编译阶段变量提升 a = undefined
}
alert(getColor());//undefined
var color = 'blue';
function getColor(){
return color;
function color(){
return yellow;
}//预编译阶段变量提升 函数体赋予a
}
alert(getColor());/*function color(){
                   	return yellow;
                   }*/

JavaScript 变量可以用来保存两种类型的值:基本类型值和引用类型值。基本类型的值源自5种基本数据类型:Undefined, Null, Boolean, Number 和 String。

  • 基本类型值在内存中占据固定大小的空间,因此被保存在栈内存中;
  • 从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本;
  • 引用类型的值是对象,保存在堆内存中;
  • 包含引用类型值的变量实际上包含的并不是对象本身,而是一个指向该对象的指针;
  • 从一个变量向另一个变量复制引用类型的值,复制的其实是指针,因此两个变量最终都指向同一个对象;
  • 确定一个值是哪种基本类型可以使用 typeof 操作符,而确定一个值是哪种引用类型可以使用 instanceof 操作符。
    所有变量(包括基本类型和引用类型)都存在于一个执行环境(也称为作用域)中,执行环境决定了变量的生命周期,以及哪一部分代码可以访问其中的变量。
  • 执行环境有全局执行环境(也称全局环境)和函数执行环境之分;
  • 每次进入一个新执行环境,都会创建一个用于搜索变量和函数的作用域链;
  • 函数的局部环境不仅有权访问函数作用域中的变量,而且有权访问其包含(父)环境,乃至全局环境;
  • 全局环境只能访问在全局环境中定义的变量和函数,而不能直接访问局部环境中的任何数据;
  • 变量的执行环境有助于确定应该何时释放内存。

标记清除是目前主流的垃圾收集算法,给当前不使用的值加上标记,然后再回收其内存。
后代选择器
使用后代选择器可以向同类元素应用不同的样式
作为 h1 元素后代的 em 元素的文本变成灰色,其他 em 文本则不会被这个规则选中。

h1 em {color: gray;}

选择子元素
把第一个 h1 下面出现的 strong 元素变成红色,但是第二个 h1 下面出现的 strong 元素不受影响

<style>h1 > strong {color:red;}</style>
<body>
<h1>this is<strong>the first strong</strong></h1>
<h1><em>this is <strong>the second strong</strong></em></h1></body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值