作用域

JS作用域&作用域链

自闭症网瘾萝莉.ら 提交于 2019-12-24 01:10:26
作用域的概念: 变量作用域的概念:变量作用域就是指一个变量可以使用的范围 全局作用域:代码在程序的任何地方都能被访问,window的内置属性都具有全局作用域,是js中最外层作用域 函数作用域:在固定的代码片段才能被访问,通过函数创建一个独立的作用域,函数是可以嵌套的,所以作用域也是可以嵌套的 作用域的做大用处就是隔离变量,不同作用域下同名变量不会有冲突 变量取值:到创建这个变量的函数的作用域中取值 var age = 18; // age是在全局作用域中声明的变量,即为全局变量 function f1(){ console.log(name); // 此处可以访问到name变量,输出undefined // 这里为何输出undefined,是由于变量提升造成的,见附录1 // name是f1函数内部声明的变量,所以name变量的作用域就是在f1函数内部 var name = "hello"; console.log(name); // 可以访问到name变量 console.log(age); // age是全局作用域中声明的变量,所以在f1函数内部也可以访问 } console.log(age); // 此处可以访问 console.log(age); // 此处不可以访问name,因为name变量在函数f1内部声明的,属于局部变量,所以在全局作用域中无法访问。 作用域链

AngularJs $compile编译服务与指令

青春壹個敷衍的年華 提交于 2019-12-23 22:11:00
$compile 这是个编译服务。编译一段HTML字符串或者DOM的模板, 产生一个将scope和模板连接到一起的函数。 编译服务主要是为指令编译DOM元素,下面的一大段也是主要介绍指令的。 下面是一个被声明的带指令定义对象的指令的示例: var myModule = angular.module(...); myModule.directive('directiveName', [“injectables”,…,function factory(injectables,…) { var directiveDefinitionObject = {    priority: 0,    template: '<div></div>', // or // function(tElement, tAttrs) { ... },    // or    // templateUrl: 'directive.html', // or // function(tElement, tAttrs) { ... },    replace: false,    transclude: false,    restrict: 'A',    scope: false,    controller: function($scope, $element, $attrs, $transclude,

JS作用域链

老子叫甜甜 提交于 2019-12-23 21:51:09
开始的第一步。创建执行函数环境ESC,创建全局作用域GO 第二步,找形参和变量声明,值为undefined(创建局部作用域AO) 第三步,形参和实参统一 第四部,在函数中找函数声明,值赋予函数体 最后,函数执行完,出栈,函数被释放。 中间的环环相扣的就是作用域链,two找不到的时候可以找one借,one没有可以找全局作用域AO借,但是one找不到的时候只能找全局作用域,不能找它的儿子(two去借)。 个人的理解为:最里面的可以挨个找自己的父级去找,从里面至外面找,但是最外面的不能往里面找 来源: CSDN 作者: 微信用户xyk 链接: https://blog.csdn.net/weixin_45846326/article/details/103671883

作用域链理解

社会主义新天地 提交于 2019-12-23 21:43:48
对于每上下文都有三个重要属性: 1.变量对象(Variable OBJECT,VO) 2.作用域链(Scope chain) 3.this 每个函数中都有一个 [[scope]] 属性,当函数创建后变量保存父量对象中,可以理解成 [[scope]]就是父量对象的一个链接层。 下面举个栗子: var num = 1 ; function a ( ) { var num = 2 ; function b ( ) { var num = 3 ; console . log ( num ) ; //3 } b ( ) ; } a ( ) ; 首先是 GO执行 GO={ a = 1; fun a() } scope[GO] fun a执行 fun a AO { num = 2 fun b; } 此时 scope[fun a,GO] fun b执行 fun b AO { num = 3; } 此时 scope[fun b,fun a,GO] 上个图: 全局作用域 ——>函数1作用域 ——> 函数2作用域 就是这样啦~~~~~ 来源: CSDN 作者: 我是易夫人 链接: https://blog.csdn.net/qq_44820039/article/details/103672772

函数的作用域

你。 提交于 2019-12-23 21:42:21
什么是作用域 JS的函数作用域,将作用域拆开来看,“作用”表示读写操作,函数可以读取代码,改写代码;“域”表示空间,范围,区域。 步骤 1、逐行解读过程中,当碰到表达式的时候,就会用表达式修改预解析的值;表达式是=、+、-、*、/、参数(注意,参数也是表达式,参数可以被修改) 2、预解析的时候,遇到重名的变量名称,字母,值留下一个; 3、预解析时,当变量碰到函数的名称一致的时候,值留下函数块。因为预解析的时候,变量其实是未定义的状态 4、逐行解读代码时,碰到函数,如果没有调用,表示函数没有执行。此时直接略过,直到有表达式才能改变变量的值。 5、所有变量,在正式运行代码之前,都会提前赋一个值;未定义。所有函数,在预解析的时候,都是函数块; 6、逐行解读代码时,是从上到下,从函数内部到函数外部的执行过程 解析 <script> var a = 20; var fun = function fun(){}; function fun1(){ console.log(b);//undefined var b = 30; console.log(a);//20 var d = 20; function fun2(){ console.log(d);//20 d = 30; console.log(d);//30 } fun2(); } fun1(); console.log(fun); <

AngularJS之指令

非 Y 不嫁゛ 提交于 2019-12-23 15:52:28
紧接上篇博客“ 初探AngularJS ” 一、前言 在AngularJS中指令尤为重要且内容庞多,固单独提炼出来,梳理一番。如有错误,请不吝讲解。 好了,言归正传,让我们一起走进Angular指令的世界。 在上篇博客的前言部分提到,Angular的核心就是对HTML标签的增强。我们用到的诸如ng-app、ng-controller等等这些都是属于Angular指令,具体点,它们为Angular内置的指令。 Angular不仅提供了内置指令,它还允许我们自定义指令,不然Angular就太low咯。 这也是本篇博客的核心:如何自定义指令。 该篇博客原文地址: http://www.cnblogs.com/giggle/p/5746220.html 二、自定义指令 Angular为我们提供了.directive()这个方法,来定义指令。 如下: 正如上述代码所示,directive方法接受两个参数:name和factory_function。   --name嘛,即为指令的名字,供我们调用时使用;   --factory_function就是当我们调用指令时,指令的实际行为,并且factory_function通常返回一个对象,里面通过规定的设置项来定义指令。 那么自定义指令中,我们都可以操作哪些设置项呢? 如下: var app = angular.module('myApp', [

js基础稍微复习下

天大地大妈咪最大 提交于 2019-12-23 08:32:08
这个我是真心不想从头再学一遍了,所以我还是看看笔记,看看代码算了,真心不想在从头,一点点看视频,太累! 函数提升也就这些,下面是变量声明提升! 行,两个提升,就复习了, 还有说下,就是js 的变量作用域,很简单, 函数内的叫做局部作用域, 函数外的叫做全局作用域! 若函数内使用变量,没有的,就去它的外层去找,就这样! 大概模拟下代码: window.onload = function(){\ var a ; if(false){ a = 100; } console.log(a); } 行,我这个呆子,这次一定要将js 学会! 来源: CSDN 作者: 爱生活,爱编程 链接: https://blog.csdn.net/qq_15009739/article/details/103644605

JavaScript--匿名函数和闭包(16)

≡放荡痞女 提交于 2019-12-23 05:18:44
// 匿名函数:没有名字的函数; // 闭包:可访问一个函数作用域里的变量的函数; 一 匿名函数 1 // 普通函数 2 function box(){ // 函数名是box; 3 return 'Lee'; 4 } 5 box(); // =>Lee; 调用函数; 6 // 匿名函数 7 function(){ // 匿名函数,会报错; 8 return 'Lee'; 9 } 10 // 通过表达式自我执行 11 (function(name){ 12 console.log(name); // =>Lee; 13 })("Lee"); // "()"表示执行函数,并且可以传参; 14 // 把匿名函数赋值给变量 15 var box = function(){ // 将匿名函数赋给变量; 16 return 'Lee'; 17 }; 18 console.log(box()); // 调用方式和函数调用相似; 19 // 函数里的匿名函数 20 function box(){ 21 return function(name){ // 函数里的匿名函数,产生闭包; 22 return name; 23 }; 24 }; 25 console.log(box()("Lee")); // 函数box()调用匿名函数,并传参; 二 闭包 // 闭包

Javascript变量作用域

老子叫甜甜 提交于 2019-12-23 03:50:26
变量的作用域指的是变量的可见性,而生命周期则(存活期)则是从另一个角度考察变量。 JS中变量的作用域分为全局变量和局部变量,函数内定义的称为局部变量,函数外的称为全局变量。(“函数外的称为全局变量”是相对的,另此处讨论的前提是用var显式声明的变量,函数内不用var定义的变量默认是全局变量,当然忽略var声明变量是不赞成的)。 var glob = 4;//函数外声明全局变量 function fun() { var height = 20; //函数内用var声明的是局部变量 weight = 50; //函数内不用var声明的是全局变量 } fun(); alert(weight); JS中没有块级作用域,即用大括号{}包含的。Java中则有。在main方法中写入下代码 public static void main(String... args) {   for(int i=0;i<5;i++) {   } { int j=10; } int z = 20; System.out.println(i); // i不可见,语法分析时报错,即编译不通过 System.out.println(j); // j不可见,语法分析时报错,即编译不通过 System.out.println(z); // z可见,输出20 } 但如果在JS中 for(var i=0;i<5;i++) { }

vue2.1.x 新增作用域插槽

試著忘記壹切 提交于 2019-12-22 17:27:21
1.定义: 作用域插槽是一种特殊类型的插槽,用作使用一个(能够传递数据到)到可重用模板替换已渲染元素。 在子组件中,只需将数据传递到插槽,就像你将props传递给组件一样。 注:在父级中,具有特殊属性scope的<template>元素,表示他是作用域插槽的模板。scope的值对应一个临时变量名,此变量接收从子组件中传递的prop对象: 实例如下: 实例的输出结果为: 2。作用域插槽更具代表性的用例是列表组件,允许组件自定义应该如何渲染列表每一项: 输出结果为: 其实质是在不同的作用域内进行传值。 来源: https://www.cnblogs.com/zhushunli/p/7065307.html