作用域

【Finish】Python Day 10

扶醉桌前 提交于 2020-01-24 03:34:39
# 函数:可读性强 复用性强 # def 函数名():   # 函数体   # return 返回值 # 所有函数:只定义不调用则一定不执行;       # 先定义后调用 # 函数名()不接受返回值 # 返回值 = 函数值()接受返回值 # 返回值:   # 没有返回值;     不写return:函数内的代码执行完毕则自动结束,     只写return:结束一个函数     return none   # 返回一个值;结束了函数且返回一个值,可以是任意值   # 返回多个值:多个值之间用逗号隔开,接收的时候 可以使用1个或者等量的多个变量接收(元祖) # 参数   # 形参:定义函数的时候       # 位置参数:必须传       # *args:动态参数 可以接受任意多个按照位置传入的参数       # 默认参数:可以不穿 —— 陷阱       # **kwargs:动态参数 可以接受任意多个按照关键字传入的参数   # 实参:调用函数的时候       # 按照位置传参数       # 按照关键字传参数         # 可以混用 位置参数必须在关键字传参之前         # 不能对一个参数重复赋值        # 如果默认参数的值是一个可变的数据类型,那么每一次调用函数的时候,如果不传值就公用这个数据类型的资源 # 函数的进阶# 命名空间和作用域#

JavaScript中作用域和预解析

不问归期 提交于 2020-01-22 22:03:03
作用域以及预解析 在javascript中作用域是非常重要的,本文章将会说明作用域以及我们在工作,以及面试中的一些面试题,如果有不足的地方希望大家可以评论指出来,自己一定会及时的改正错误,避免大家走入一些误区。 谈及作用域先就必须要说明预解析和词法作用域。 下面我们先说明一下: 预解析 代码在正常执行操作之前会对文档进行一次解析,这个操作就是将声明提升, 声明包括全局范围内 1.带有var的变量, 2.函数 文档预解析后会把文档中在全局函数中的内容储存起来,将全局中带有var的变量(var和变量名,注意:变量体不会随着提升,加载var只是告诉我们在文档中有一个全局变量是fn,并不会有其他的作用)提升到最前面 预解析后会正常的读取代码(由上至下由左到右) 下面举例说明一下预解析: var fn=456; function fn(){ } 在上述的代码中我们预解析后会变成: var fn; function fn(){ } fn=456; 所以不管function是在前面还是后面我们打印fn出来的结果都是456。 词法作用域 词法作用域在书写代码的时候就已经决定了,与运行无关 可以分割词法作用域的只是函数,别的不可以分割 下面举例说明一下词法作用域 if(true){ function fn(){ alert("true"); } }else{ function fn(){ alert

作用域和预解析

瘦欲@ 提交于 2020-01-22 20:33:30
// 作用域: // 域:空间、范围、区域…… // 作用:读、写 script 全局变量、全局函数 自上而下 函数 由里到外 {} 浏览器: “JS解析器” 1)“找一些东西” :var function 参数 a = ... 所有的变量,在正式运行代码之前,都提前赋了一个值:未定义 fn1 = function fn1(){ alert(2); } 所有的函数,在正式运行代码之前,都是整个函数块 JS 的预解析 遇到重名的:只留一个 变量和函数重名了,就只留下函数 2)逐行解读代码: 表达式:= + - * / % ++ -- ! 参数…… 表达式可以修改预解析的值! alert(a); // function a (){ alert(4); } var a = 1; alert(a); // 1 function a (){ alert(2); } alert(a); // 1 var a = 3; alert(a); // 3 function a (){ alert(4); } alert(a); // 3 alert( typeof a ); // a(); // 报错 */ /* var a = 1; function fn1(){ alert(a); // undefined var a = 2; } fn1(); alert(a); // 1 var a = 1;

JavaScript之function(下)简介

半腔热情 提交于 2020-01-22 04:24:38
1.作用域的概念 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。 局部作用域和全局作用域 在JavaScript中,变量的作用域有全局作用域和局部作用域两种。 引入: < body > < script > //1.变量,函数作用的范围??? //2.变量为什么前置访问undefined,而函数可以任何地方调用???? < / script > < script > alert ( a ) //报错Uncaught ReferenceError: a is not defined(为什么???) < / script > < script > alert ( a ) //undefined var a = 3 ; alert ( a ) ; //3 < / script > < script > alert ( a ) //3 < / script > < / body > 全局作用域(变量):整个程序都有效,即整个代码中都可以调用(特殊:变量前面没有添加var变成全局的属性,也是整个程序都有效)。 (1)全局作用域(全局变量):对整个script块内都是有效,也可以理解成作用于整个文档。(一般情况下一个文档只有一个script块,要是有多个script

JavaScript严格模式

我们两清 提交于 2020-01-21 23:51:33
JavaScript严格模式的使用是规范js代码的一种行为,它对代码提出了更高的要求,会对代码进行错误检查,使js代码更加具有健壮性、安全性。 我们平时使用的是一般模式。要进入严格模式,可以在js文件开头写上 'use strict'; 或者在函数开头写上这一句,从而使得函数内部进入严格模式。从这里我们可以看出,函数内部具有自己的作用域。 说起作用域,js的作用域可以分为全局作用域、函数作用域和eval的独立作用域,虽然ES5没有块级作用域的说法,但是块级作用域在ES6用let实现了。 严格模式是向上兼容的。 这里介绍几个严格模式下的要求: 1.不允许使用with。原因是with写出来的代码可读性差,不推荐使用。(with里的代码块可以直接使用传入的对象的属性) 2.不允许未被声明的变量被赋值。这点是为了防止变量在不经意间自动提升为全局变量。如 var a = b = 1 这句代码中b就被自动提升为全局变量。 3.arguments变为参数的静态副本。 如下面的示例,一般模式输出100,严格模式输出1。 'use strict' function f(a){ arguments[0] = 100 return a } document.write(f(1)) 4.使用运算符delete删除一些不可以删除的东西(如参数、函数名、不可配置的属性等)报错。

《你不知道的javascript·上》笔记

匆匆过客 提交于 2020-01-21 19:03:51
作用域是什么 编译原理 分词/词法分析 这个过程会将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代码块被称为词法单元 解析/语法分析 词法单元流(数组)转换成一个由元素逐级嵌套所组成的代表了程序语法结构的树(抽象语法树AST) 代码生成 将AST转换为可执行代码的过程称被称为代码生成 理解作用域 处理成员 引擎——负责代码编译和执行 编译器——词法-语法-代码生成 作用域——根据名称查找变量的一套规则 引擎查询(代码执行前) 一个赋值操作的LHS(左侧)和RHS(右侧)查询 var a = 0 LHS-a,RHS-0 console.log(a) LHS-无,RHS-log和a 如果查找的目的是对变量进行赋值,就会使用LHS查询 如果查找的目的是获取变量的值,就会使用RHS查询 词法作用域 词法阶段 定义在词法阶段的作用域,由你在写代码时将变量和块作用域写在哪里来决定的,执行时不变,因此该词法作用域属于静态作用域(相对于动态作用域) 无论函数在哪里被调用,也无论它如何被调用,它的词法作用域都只由函数被创建时所处的位置决定 词法作用域是在写代码或者说定义时确定的,而动态作用域是在运行时确定的(javascript的this也是) 词法作用域关注函数在何处声明,而动态作用域关注函数从何处调用 欺骗词法 eval——修改词法 with——创建词法 性能

05.js函数下集

一世执手 提交于 2020-01-21 16:48:29
函数(下) 作用域(重点) 什么是作用域,就是一个变量可以生效的范围 变量不是在所有地方都可以使用的,而这个变量的使用范围就是作用域 全局作用域 全局作用域是最大的作用域 在全局作用域中定义的变量可以在任何地方使用 页面打开的时候,浏览器会自动给我们生成一个全局作用域 window 这个作用域会一直存在,直到页面关闭就销毁了 // 下面两个变量都是存在在全局作用域下面的,都是可以在任意地方使用的 var num = 100 var num2 = 200 局部作用域 局部作用域就是在全局作用域下面有开辟出来的一个相对小一些的作用域 在局部作用域中定义的变量只能在这个局部作用域内部使用 在 JS 中只有函数能生成一个局部作用域,别的都不行 每一个函数,都是一个局部作用域 // 这个 num 是一个全局作用域下的变量 在任何地方都可以使用 var num = 100 function fn() { // 下面这个变量就是一个 fn 局部作用域内部的变量 // 只能在 fn 函数内部使用 var num2 = 200 } fn() 变量使用规则(重点) 有了作用域以后,变量就有了使用范围,也就有了使用规则 变量使用规则分为两种,访问规则 和 赋值规则 访问规则 当我想获取一个变量的值的时候,我们管这个行为叫做 访问 获取变量的规则: 首先,在自己的作用域内部查找,如果有,就直接拿来使用

8.JavaSE之变量、常量、作用域

徘徊边缘 提交于 2020-01-21 15:57:56
变量variable: 变量是什么:就是 内存中开辟的可以变化的量 ! Java是一种强类型语言,每个变量都必须声明其类型。 Java变量是 程序中最基本的存储单元 ,其要素包括 变量名,变量类型,作用域 type varName = value;//数据类型 变量名 = 值; 注意事项: 每个变量都有类型, 类型可以是基本类型,也可以是引用类型 。 变量名必须是 合法的标识符 。 变量声明是一条完整的语句,因此 每一个声明都必须以分号结束 。 1 public class Demo06 { 2 public static void main(String[] args) { 3 //int a,b,c; 4 //基本类型:四类八种 5 //int a=1,b=2,c=3;//可以使用逗号隔开但最好分三行写,要注重程序可读性,让大家读的比较顺畅。 6 int a = 1; 7 int b = 2; 8 int c = 3; 9 char d ='X'; 10 double p= 3.14; 11 //引用类型 12 String name = "leiwei";//英文分号结尾不写报错 13 14 } 15 } 变量作用域: 类变量: 静态变量、static、从属于类 实例变量: 类中方法外、从属于对象、如果不自动初始化,则用这个类型的默认值。整数 0、 浮点数 0.0、 char

具名插槽、作用域插槽的新写法

旧城冷巷雨未停 提交于 2020-01-20 03:05:02
具名插槽、作用域插槽的新写法 具名插槽 自 2.6.0 起有所更新。已废弃的使用 slot attribute 的语法 但是我们有了新的语法,如下: 子组件 childCom: < template id = " childCom " > < div > <!-- 具名插槽的针对于组件中不止一个插槽的情况下使用,使用方式,即:给每个插槽指定 name 属性,在使用的时候需要给标签设置 slot 属性,且属性值为 对应的 name 属性的属性值 --> < slot name = ' left ' > < span > 左边 </ span > </ slot > <!--给每个插槽命名,插槽中间是默认内容--> < slot name = ' center ' > < span > 中间 </ span > </ slot > < slot name = ' right ' > < span > 右边 </ span > </ slot > </ div > </ template > 父组件 app: < div id = " app " > < cpn > </ cpn > <!-- 2.6.0更新后的插槽使用方式发生了变化 --> <!-- 区别在于调动的时候是使用 v-slot:具体名称,而不是定义一个 slot='具体名称' 这样的属性 --> < cpn > <!--

JavaScript-函数

孤人 提交于 2020-01-20 03:01:32
函数 什么是函数? 函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用。 函数使用分为两步:声明函数和调用函数 声明函数 // function 函数名() { // // 函数体 // } function sayHi() { console.log('hi~~'); } // (1) function 声明函数的关键字 全部小写 // (2) 函数是做某件事情,函数名一般是动词 sayHi // (3) 函数不调用自己不执行 调用函数 // 函数名(); sayHi(); // 调用函数的时候千万不要忘记加小括号 函数的封装 函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口 简单理解:封装类似于将电脑配件整合组装到机箱中(类似快递打包) 利用函数计算1-100之间的累加和 // 1. 声明函数 function getSum() { var sum = 0; for (var i = 1; i <= 100; i++) { sum += i; } console.log(sum); } // 2. 调用函数 getSum(); getSum(); 函数的参数 在声明函数时,可以在函数名称后面的小括号中添加一些参数,这些参数被称为形参,而在调用该函数时,同样也需要传递相应的参数,这些参数被称为实参。 形参