作用域

Vue躬行记(6)——内容分发

核能气质少年 提交于 2019-12-04 05:37:34
  Vue提供了一种内容分发技术,可将父组件中的内容传递给子组件的模板,实现方式参照了Web组件规范草案。 一、插槽   Vue内置了一个<slot>元素,能作为插槽(slot)存在,而插槽内可包含文本、HTML片段、组件等。以下面的btn组件为例,其模板中包含一个<slot>元素,在DOM中为btn组件添加了文本内容。 <btn>提交</btn> <script> Vue.component("btn", { template: '<button><slot></slot></button>' }); </script>   渲染出的<button>元素会包含“提交”,即插槽被替换成了分发的内容,如下所示。 <button>提交</button>   在插槽中允许添加默认的内容(即为<slot>元素附加内容,如下所示),当父组件没有传递内容时,它们就会被渲染。 Vue.component("btn", { template: '<button><slot>提交</slot></button>' }); 二、具名插槽   具名插槽是指包含名称的插槽,即指定了name特性的<slot>元素。当组件的模板中需要多个插槽时,就得通过名称来加以区分。例如有一个page组件,包含三个<slot>元素,其中有两个声明了name特性,如下所示。 Vue.component("page", {

C语言存储类别和链接

拈花ヽ惹草 提交于 2019-12-04 05:30:40
目录 C语言存储类别和链接 存储类别 存储期 五种存储类别 存储类别和函数 分配内存malloc()和free() C语言存储类别和链接 ​ 最近详细的复习C语言,看到存储类别的时候总感觉一些概念模糊不清,现在认真的梳理一下。C语言的优势之一能够让程序员恰到好处的控制程序,可以通过C语言的内存管理系统指定变量的作用域和生存周期,实现对程序的控制。 存储类别 基本概念 对象 :在C语言中所有的数据都会被存储到内存中,被存储的值会占用一定的物理内存,这样的一块内存被称为 对象 ,它可以储存一个或者多个值,在储存适当的值时一定具有相应的大小。(C语言对象不同于面向对象语言的对象) 标识符 :程序需要一种方法来访问对象,这就需要声明变量来实现,例如: int identifier = 1 ,在这里 identifier 就是一个标识符,标识符是一个名称并遵循变量的命名规则。所以在本例中 identifier 即是C程序指定硬件内存中的对象的方式并提供了存储的值的大小“1”。在其它的情况中 int * pt 、 int arr[10] ,pt就是一个标志符,它指定了储存地址的变量,但是表达式*p不是一个标志符,因为它不是一个名称。 arr 的声明创建了一个可容纳10个 int 类型元素的对象,该数组的每一个元素也是一个对象。 作用域 :描述程序中可访问标识符的区域

JavaScript作用域链

与世无争的帅哥 提交于 2019-12-04 04:38:52
JavaScript是基于词法作用域的语言:通过阅读包含变量定义在内的数行源码就能知道变量的作用于。全局变量在程序中始终都是有定义的。局部变量在声明它的函数体内以及其所嵌套的函数内始终是有定义的。 如果将一个局部变量看作是自定义实现的对象的属性的话,那么可以换个角度来解读变量作用域。每一段JavaScript代码(全局代码或函数)都有一个与之关联的作用域链(scope chain)。这个作用域链是一个对象列表或者链表,这组对象定义了这段代码“作用域中”的变量。当JavaScript需要查找变量x的时候(这个过程称为“变量解析”(variable resolution)),它会从链中的第一个对象开始查找,如果这个对象有一个名为x的属性,则会直接使用这个属性的值,如果第一个对象中不存在名为x的属性,则会继续查找下一个对象,以此类推。如果作用域上没有任何一个对象含有属性x,那么就认为这段代码的作用域链上不存在x,并最终抛出一个引用错误(Reference Error)异常。 在JavaScript的最顶层代码中(也就是不包含在任何函数定义内的代码),作用域链由一个全局对象组成。在不包含嵌套的函数体内,作用域链上有两个对象,第一个是定义函数参数和局部变量的对象,第二个全局对象。在一个嵌套的函数体内,作用域链上至少有三个对象。理解对象链的创建规则是非常重要的。当定义一个函数时

js

自闭症网瘾萝莉.ら 提交于 2019-12-04 04:34:01
存储(变量) Js 中变量是存在 栈内存 中 Js 中的内存分两种 栈内存 堆内存 栈内存 就是存放变量的 堆内存 就是存代码块 object 和 function Js 特殊在它是一个 弱类型语言: 定义变量的时候没有明确指明它的数据类型,而是有后面赋的值决定它的类型 Var a=”” var a=12; var a=[];var a={} Java 是强类型语言 定义变量的时候就指明它的数据类型,后面的赋值就不能随便赋值了,必须和数据类型保持一致。 String a=”123”; number a=12; Boolean a=true; Js 内存存放机制 基本数据类型: string number Boolean undefined null 如果变量后面的值是基本数据,就直接存在栈内存中。栈里面要求变量不能重名,如果重名后者就会覆盖前者。 引用数据类型: object array function 如果变量后面是引用数据类型,将后面的代码块存在堆内存中,然后将堆内存中的内存地址赋值给前面的变量。 备注 : 浏览器在执行 js 代码前,找出所有的关键字 var 和 function 将定义的变量存在内存中,存放完毕之后按照自上向下的顺序一步一步执行,当 使用某个变量的时候( console.log(xxx) ) ,就会向内存查找,有就直接使用,没有就 xxx is not

浅谈JS中 var let const 变量声明

可紊 提交于 2019-12-04 04:33:36
浅谈JS中 var let const 变量声明 用 var 来声明变量会出现的问题: 1. 允许重复的变量声明:导致数据被覆盖 2. 变量提升:怪异的数据访问、闭包问题 3. 全局变量挂载到全局对象:全局对象成员污染问题 例 1 : 用 var 声明的变量会默认被提升到当前作用域的顶部 例 2 : For 循环内的 i 变量当前所处的环境是全局作用域(函数局部作用域同理,只不过声明之后不绑定在 window 上)。 所以在最后点击事件触发的时候打印的 i 都是当前作用域上的同一个 i ,也即是最后的 11 ,这就产生了闭包,如下图 ES6 中引入 let 和 const ,以及块级作用域来解决这个问题 什么是块级作用域 块级作用域:代码执行时遇到花括号,会创建一个块级作用域,花括号结束,销毁块级作用域 let 在全局作用域下定义变量不会挂在到顶层对象 window 上 let 声明的变量,不允许当前作用域范围内重复声明,在块级作用域中用 let 定义的变量,在作用域外不能访问 let 不会有变量提升,因此,不能在定义 let 变量之前使用它 例 1 (对比): 为什么会出现 error ,因为在 let 和 const 中引入了一个暂存该类变量的区域 Temporal Dead Zone ,简称 TDZ 。就是我们所说的临时死区。 在 TDZ 中的变量不能被访问,不然就会报错

MyBatis生命周期和作用域

随声附和 提交于 2019-12-04 04:32:38
参考文章: https://www.cnblogs.com/yulinfeng/p/6002379.html https://www.cnblogs.com/limn/p/9022663.html https://www.cnblogs.com/jeffen/p/6262760.html SqlSessionFactoryBuilder只用于创建SqlSessionFactory,存在于一个局部方法内部,创建完SqlSessionFactory就可以让他死亡了,不要让他持久保存,这很浪费资源。虽然他可以重复创建SqlSessionFactory,但创建一个是最好的,创建多个是浪费并且无用,一般它都是单例的。 SQLSessionFactory是一个数据库连接池,作用是创建SQLSession接口对象。它的生命周期是整个应用,作用域也是整个应用。 SQLSession是一个数据库连接对象(Connection对象),具备对数据库的一次连接访问,一次可执行多条语句。执行完之后就要销毁,生命周期是一次数据库连接。 Mapper是SQLSession创建的,他可以执行sql语句,但是必须依赖数据库的连接才能执行,因此它的生命周期是一次sql语句的执行。 总结 作用域&生命周期: SqlSessionFactoryBuilder-->创建SqlSessionFactory的一个局部方法内

函数的名称空间和作用域

对着背影说爱祢 提交于 2019-12-04 03:58:22
命名空间 一、什么是python的名称空间 名称到对象的映射。命名空间是一个字典的实现,键为变量名,值是变量对应的值。各个命名空间是独立没有关系的,一个命名空间中不能有重名,但是不同的命名空间可以重名而没有任何影响。 通俗讲:名称空间就是存放名字的地方,三种名称空间,(之前遗留的问题x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方) 原文链接:https://blog.csdn.net/lmseo5hy/article/details/80353099 二、名称空间的分类 内置名称空间 (Built-in)    存放着python的内置名称,如内置语言的名称如 len,char 和一些异常的名称 BaseException等,在任何模块都可以被调用,且随着python解释器的启动而产生,关闭而回收,因此它是第一个被加载的名称空间. >>> len <built-in function len> 全局名称空间    模块中定义的名称,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量,伴随着python文件的执行而产生 局部名称空间    函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量,只有调用函数时才会产生,调用完成时便会被回收 >>> def func(): ... a = 1 ... >>> a

android中常用的快捷键

你。 提交于 2019-12-04 01:55:24
android 中常用的快捷键 Eclipse快捷键-方便查找,呵呵,记性不好 行注释/销注释 Ctrl+/ 块注释/销注释/XML注释 Ctrl+Shift+/ Ctrl+Shift+\ 查找 查找替换 Ctrl+H Ctrl+F 查找下一个/往回找 Ctrl+K Ctrl+Shift+K 跳到某行 Ctrl+L,哈用惯了Editplus,不时会敲下Ctrl+G, 查找当前元素的声明 Ctrl+G 查找当前元素的所有引用 Ctrl+Shift+G 重新组织Import Ctrl+Shift+O,能帮你一次去掉所有未使用的Import声明! 快速修正 Ctrl+1 引入某个类(接口)ctrl + shift + m 加头注释 shift + alt + j 更改启动页 在AndroidManifest.xml第一个activity标签项中 android:name=".ResultDemoActivity" ResultDemoActivity改为你想要第一启动的activity 取消对“块注释的格式化”: Windows->Preferences->Java->Code Style->Formatter->Edit->Comments,然后取消对“Enable block comment formatting"的勾选。 编辑相关快捷键 Eclipse的编辑功能非常强大

Web前端经典面试试题(一)

烈酒焚心 提交于 2019-12-04 01:31:07
本篇收录了一些面试中经常会遇到的经典面试题,并且都给出了我在网上收集的答案。眼看新的一年马上就要开始了,相信很多的前端开发者会有一些跳槽的悸动,通过对本篇知识的整理以及经验的总结,希望能帮到更多的前端面试者。(如有错误或更好的答案,欢迎指正,水平有限,望各位不吝指教。) 一. 什么是语义化的HTML?有何意义?为什么要做到语义化?(高频率考题) a.什么是语义化的HTML? 语义化的HTML就是写出的HTML代码,符合内容的结构化(内容语义化),选择合适的标签 (代码语义化),能够便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器 很好地解析。 b、为什么要做到语义化? 1.有利于SEO,有利于搜索引擎爬虫更好的理解我们的网页,从而获取更多的有效信息,提升网页 的权重。 2.在没有CSS的时候能够清晰的看出网页的结构,增强可读性。 3.便于团队开发和维护,语义化的HTML可以让开发者更容易的看明白,从而提高团队的效率和协 调能力。 4.支持多终端设备的浏览器渲染。 二. 行内元素和块元素分别有哪些?(高频率) 块级元素:div , p , form, ul, li , ol, dl, form, address, fieldset, hr, menu, table 行内元素:span, strong, em, br, img , input, label, select,

RUST 0x03 Ownership

你离开我真会死。 提交于 2019-12-04 01:21:58
RUST 0x03 Ownership Ownership是Rust最独特的一个特性,能够保证内存安全。 1 What's the Ownership!? Ownership Rules Rust中的每一个值都有一个叫做它的 owner 的变量。 同时只能有一个owner。 当owner离开作用域(scope),这个值将被丢弃。 变量作用域 以string为例: { // s还没有被声明,不有效 let s = "hello"; // 从这里开始,s有效 // 用s搞事情 } // 这个作用域结束了,s不再有效 简单来说: 当s 出现到 作用域中,它有效。 直到它脱离作用域前,它一直都有效。 String 类型 为了更好地阐述Ownership的规则,我们需要一个比之前学得更复杂的数据类型。之前的数据类型都存储在栈(stack)中,并在它们的作用域结束之后从栈中弹出(pop off)。而 String 存储在堆(heap)中,并通过指针(pointer)访问。 在这里我们只集中讨论 String 的和ownership有关的部分,这些方面也适用于standard library中的其它复杂数据类型。 上面的例子中,s为字符串常量,它不可以改变。而且必须在代码中将字符串的值写出。用接下来的代码可以创建可变的、不必在代码中将字符串的值写出的 String : let mut s =