关于js作用域总结,对妙味视频学习的总结

主要理解以下四条

1,预编译

查找 var function

2.,逐行解析,表达式会改变预编译的值

3.作用域链

4.每次到一个新的作用域链重复一1,2两个过程;

eg.1

alert(a);    //function fn2(){var a =10} ,预编译
var a =1;
alert(a);    //1;表达式改变a
function fn1(){ var a = 11;}
alert(a);    //1; 函数块不会改变a的值
var a =2;
alert(a);    //2   表达式

eg.2

var a =1;
function a(){alert(2)};
typeof a ;    //"number",typeof返回值是String
a();          //报错,因为此时a是number

eg.3

var a = 1;
function fn1(){
    alert(a);
    var a = 2;
}
fn1();       //undefined,调用fn1函数,又开始预编译,此时搜索到var关键字,a为undefined
alert(a);    //1    此时搜索全局变量下,a=1

eg.4

var a = 1;
function fn1(){
    alert(a);
    a = 2;
}
fn1();    //1    调用fn1函数,预编译未发现关键字,通过作用域链搜索外部中的a
alert(a)  //2    由于fn1中 a赋值语句未使用var关键字,改变了全局变量a

eg.5

var a = 1;
function fn1(a){
    alert(a);
    a = 2;
}
fn1();  //undefined,由于传参a,其实意味着var a;预编译时发现关键字,声明了a
alert(a)//1,由于fn1中var a,故在变量中a是局部变量

eg.6

var a = 1;
function fn1(a){
    alert(a);
    a = 2;
}
fn1(a);  //1
alert(a) //1
时间: 2024-10-05 22:55:32

关于js作用域总结,对妙味视频学习的总结的相关文章

JS作用域和预编译(转载 学习中。。。)

JS在页面加载过程中顺序执行.但是分块预编译.执行. JS在执行前会进行类似”预编译”的操作,而且先预声明变量再预定义函数. 此时注意,是声明,不是定义,如:var a = 1; 在预编译中,只是执行了”var a”没有赋值,即在预编译结束时a 为undefined. (注意)并不是先全文编译完在执行,而是块编译,即一个script块中,预编译再执行,然后(按顺序)下一个script块,预编译再执行,但此时上一个块中的数据都是可以用的,但下一个块中的函数,声明的变量都是不可用的. 变量没声明就引

妙味js预热课程(一)

2016年5月24日(妙味课堂js预热课程-2笔记)一.前言 1.window.onload(事件):是在页面加载完成以后来执行一个功能: 如 window.onload=function(){ alert(“a”) } 这是一个匿名函数,因为在function后面括号前面没有名字: 即在页面加载完成以后弹出一个警告框! 2.如何提取行间事件: 3.为什么一定要用到onload? 二.主要内容 1.收缩展开菜单——if判断 如果菜单已经是显示的,把菜单隐藏: 如果菜单已经是隐藏的,把菜单显示.

妙味远程课堂-JS热身运动-下

html由属性名和属性值组成 属性读操作:获取.找到 元素.属性名 属性写操作:添加.替换.修改 元素.属性名=新的值 元素.innerHtml//读取元素内的html内容 元素.innerHtml=新的值//修改或替换他里面的内容 案例1 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>妙味1</title&

妙味课堂——JavaScript基础课程笔记

集中时间把秒微课堂JS的基础课程看完,并且认真完成了课后练习.感觉在JS方面的技能算是入了个门了.课后练习的作业完成的代码我都汇总在了这里.至于视频课的学习笔记,则记录如下. 第01课JS入门基础_热身课程 写JS的步骤 先实现布局 想出实现原理 了解JS语法 希望把某个元素移除的实现 display: none; 显示为无 visibility: hidden; 隐藏 width \ height 透明度 left \ top 拿与背景色相同的div盖住该元素 利用margin值 …… 获取元

妙味课堂——HTML+CSS基础笔记

妙味课堂的课程讲得非常的清楚,受益匪浅.先把HTML和CSS基础课程部分视频的学习笔记记录如下: padding #PS基础 ##前端需要的PS技能 - PS技能(前端需要):切图.修图.测量 - PS工具: - 移动工具 - 矩形选框工具 - 裁切工具 - 吸管工具 - 横排文字工具 - 手抓(快捷键:空格) - 缩放(快捷键:Ctrl + 和 Ctrl -) - 标尺(快捷键:Ctrl R,主要是拖出参考线.矩形区域选择的时候,按住Ctrl,就能贴合参考线) - 自由变换(快捷键 Ctrl

妙味,结构化模块化 整站开发my100du

************************************************************************************* 重要:重新审视的相关知识 /* 妙味官网:www.miaov.com 技术交流:bbs.miaov.com 1.ps查看圆角度数,border-radius:; 选择->修改-> 平滑6px 2.渐变 -ms-filter:"progid:DXImageTransform.Microsoft.gradient (G

【学+原】CSS3的2D动画 ——仿NOMOS手表—— 妙味课堂

看CSS3妙味课堂中有一课是介绍如何做钟表界面,然后三根针都能随着时间转动,然后自己在那个简易的版本上做了一些进一部改进. 最关键的知识点应该是transform-origin这个样式,要选对旋转的中心点.分针秒针时针的旋转中心点应该是针的底部中间位置 这个实例还是让我第一次见到把<style>设置了id,然后写进js里去操作的,因为表面的各种小时,秒的刻度的制作,需要用循环来写,直接写css样式里是不现实的. 另外就是要把setInterval和transform:rotate结合起来使用,

JS作用域面试题总结

关于JS作用域问题,是面试的时候面试官乐此不疲的面试题,有时候确实是令人抓狂,今天看到一个讲解这个问题的视频,明白了那些所谓的“原理”顿时有种豁然开朗的感觉~~~ 1.js作用域(全局变量,局部变量)内部可以访问外部,但外部的不能访问内部的(局域变量) var a=10; function aaa(){ alert(a); }; aaa(); //a 为外部变量即全局变量,所以可以直接访问到 结果为10 function aaa(){ var a=10; }; aaa(); alert(a);

妙味课堂基础篇0_3

1.日历 1 JAN 2 FER 3 MAR 4 APR 5 MAY 6 JUN 7 JUL 8 AUG 9 SEP 10 OCT 11 NOV 12 DEC 1月活动 快过年了,大家可以商量着去哪玩吧- <!DOCTYPE html PUBLIC "-//W3C//h2D XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/h2D/xhtml1-transitional.h2d"> <