javascript小白学习指南1---0
第二章 变量和作用域
本章主要内容
- 基本类型和引用类型
- 运行环境
- 垃圾回收(了解就可以)
基本类型和引用类型
var csdn = new Object();
csdn.blog = "Tomihaohao";
alert(csdn.blog) // Tomihaohao var name ="csdn";
name.age = 123;
alert(name.age) //undefined //相同的一段方式的代码为什么 结果不一样呢?
在JS中仅仅能给引用类型的值加入动态的属性
var a =1;
var b = a;
alert(b);
//-------------------------------------
var obj1 = new Object();
var obj2 = obj1;
obj1.name = "csdn";
alert(obj2.name) //"csdn" //知道上面两段代码在解析器里发生什么了吗?
两张图帮你解释清楚
function addnum(param){
num +=10;
return num;
}
var a = 10;
var b = addnum(a);
alert(a); //10
alert(b); //20
//看 他们两个是互不影响的
有人可能会疑问 拿要是引用类型还是这样吗?
function setObj(obj){
obj.name = "csdn";
obj = new Object();
obj.name = "Tomihaohao"
}
var T = new Object();
setObj(T);
alert(T.name);
//是什么呢? 没错依旧是csdn
//实际上这个局部对象,在函数运行完后就被kill了
新的工具 instanceof
var person = [] alert(person instanceof Array)
//person 是 Array对象吗? 当然是!
运行环境和作用域
- 运行环境定义了变量和函数有权訪问的其它数据,决定了它们各自的行为
- 每一个运行环境都有一个与之关联的 变量对象
- 在浏览器中 window 对象是全局运行环境,它们仅仅有在应用退出时才干销毁
- 每一个函数都有自己的运行环境
- 代码在一个环境运行时,会创建对象变量的一个作用域
- 标识符解析是沿着作用域一级一级的搜索标识符的过程
var color = "white";
function changeColor(){
var anotherColor = "red"; function swapColors(){
var tempColor = anotherColor;
anotherColor = color;
color = tempColor;
//这里能够訪问 color anotherColor tempColor
} swaoColors();
//这里能够訪问color anotherColor } changeColor();
//仅仅能訪问到color
上面的代码一共同拥有三个运行环境,各自是全局环境 changeColor() 局部环境 swapColors() 局部环境,全局环境中有一个变量 color 而在 changeColor()中 有 anotherColor这个变量和 swapColors()这个函数,在swapColors()中有一个tempColor,至于为什么有的地方訪问不到呢?
for(var i =0 ;i<10;i++)
{
console.log(i);
}
alert(i); //i=10
假设是JAVA 那么变量i会被马上销毁,但在JS中呢!依旧存在
var color ="blue";
function getColor(){
//var volor ="red";
return color;
}
alert(getColor()) //blue
//假设去掉 getColor()中的凝视 那么返回的就是red
没错,在js中 标识符会沿着作用域逐级的网上搜索,直到找到为止
浏览器中的GC 垃圾回收
//向这样 var a ="csdn "; //没用啦 a = null
//解除引用
总结
- 从一个变量拷贝到还有一个变量的 详细过程,会创建这个值的副本
- 引用类型的值是对象,保存在堆内存中
- 引用类型值的变量事实上是一个指针
- 引用类型的复制实质上是复制了一个指针他们同一时候指向同一个对象
- 学习了新的工具instanceof
- 学习了作用域链
- 了解了GC
javascript小白学习指南1---0的更多相关文章
- javascript小白学习指南0---1
引言: 做为一名程序猿.都是真心的想把自己的东西分享出来,供大家一起学习探讨.一起提高技能.一起涨工资,呵 这一系列的文章都是关于Javascript 基础的 当然文章其中穿插了些我自己的理解.希 ...
- javascript立体学习指南
javascript立体学习指南第一章:首先了解javascript 首先,什么是javascript? JavaStrip出生于1995年,是一种文本脚本语言,成都装修公司是一种动态的.弱类型的.基 ...
- JavaScript每日学习日记(0)
8.10.2019 1.JavaScript能改变HTML内容.属性.样式,能隐藏或显示HTML元素. 2.JavaScript函数可以任意数量被放置在<body>.<head> ...
- 最棒的 JavaScript 学习指南(2018版)
译者注:原文作者研究了近2.4万篇 JavaScript 文章得出这篇总结,全文包含学习指南.新人上手.Webpack.性能.基础概念.函数式编程.面试.教程案例.Async Await.并发.V8. ...
- web前端学习:JavaScript学习指南
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚本是通过嵌入在HTML中来实现 ...
- 学习javascript,您将发现以下两个学习指南
学习javascript,您将发现以下两个学习指南,一个是初学者的,另一个是茄子一号经验丰富的程序员和Web开发人员的.你想学习javascript并对它有兴趣.我想这就是你来这里的原因,你做了一个明 ...
- 大量Javascript/JQuery学习教程电子书合集
[推荐分享]大量Javascript/JQuery学习教程电子书合集,送给有需要的人 不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小 15天学会jQuery(完整版).pd ...
- [推荐分享]大量Javascript/JQuery学习教程电子书合集,送给有需要的人
不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小 15天学会jQuery(完整版).pdf 274.79 KB 21天学通JavaScript(第2版)-顾宁燕扫描版.pdf ...
- Java工程师学习指南 完结篇
Java工程师学习指南 完结篇 先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦. 因为笔者还只是一名在校 ...
随机推荐
- 路飞学城Python-Day3
Moudle 1 Chapter 1 #练习题# 1.简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型?"""编译型:编译类指在应用源程 ...
- POJ-1743 Musical Theme 字符串问题 不重叠最长重复子串
题目链接:https://cn.vjudge.net/problem/POJ-1743 题意 给一串整数,问最长不可重叠最长重复子串有多长 注意这里匹配的意思是匹配串的所有元素可以减去或者加上某个值 ...
- [HDU5685]2016"百度之星" - 资格赛 Problem A
题目大意:给你一个字符串,和一些问题,每个问题问你[l,r]子串的哈希值是多少. 哈希值计算方法为:$H(s)=\prod _{i=1} ^{i\leq len(s)}(s_i-28)(mod\ 99 ...
- nginx 多级7层代理安装配置
编译安装 yum install zlib-devel -y wget https://nginx.org/download/nginx-1.15.12.tar.gz tar -zxf nginx-1 ...
- Vue过渡与动画
通过 Vue.js 的过渡系统,可以在元素从 DOM 中插入或移除时自动应用过渡效果.Vue.js 会在适当的时机为你触发 CSS 过渡或动画,你也可以提供相应的 JavaScript 钩子函数在过渡 ...
- Vue异步组件Demo
Vue异步组件Demo 在大型应用中,我们可能需要将应用拆分为多个小模块,按需从服务器下载.为了进一步简化,Vue.js 允许将组件定义为一个工厂函数,异步地解析组件的定义.Vue.js 只在组件需要 ...
- python 正则表达式与re模块
一.正则表达式 用途 用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. #### 简单地说 就是用于字符串匹配的 字符组 在 ...
- PKU 2184 Cow Exhibition 01背包
题意: 有一些牛,每头牛有一个Si值,一个Fi值,选出一些牛,使得max( sum(Si+Fi) ) 并且 sum(Si)>=0, sum(Fi)>=0 思路: 随便选一维做容量(比如Fi ...
- Docker学习总结(4)——Docker镜像与容器命令
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal. ...
- OO问题
设计一个在线的酒店预订系统,并且可以通过城市搜索出来 解决办法: Main Class: User Room Hotel Booking Adress Enums : 房间的状态和类型 public ...