变量

什么是匿名函数?

孤者浪人 提交于 2020-02-25 12:48:39
在前端面试中面试官基本都会问到什么是匿名函数、什么是闭包函数。 本文就先来说一下什么是匿名函数。 匿名函数顾名思义就是没有名字的函数,通常我们所写的函数都是这样的: 1 function do(){ 2 // 执行代码 3 }; 4 5 // 调用 6 do(); 这种写法是定义了一个名为do的函数,并通过函数名称进行调用。 那如果没有名字是什么样子的啊? 1 function () { 2 // 执行代码 3 }; 这种写法在编译的时候会报错: Uncaught SyntaxError: Unexpected token ( 这是为什么呢?原来时因为浏览器在进行语法分析的时候发现这个函数根本没法执行。 那要为什么还要匿名函数呢?在编程语言中如果又个编码方式那这种编码方式肯定是能正常运行的,那该如何让匿名函数跑起来呢?再看下面的例子: var do = function () { // 执行代码 } do(); 这种函数大家肯定都知道,其实这种写法就是将匿名函数复制为变量do,再通过变量名执行函数。 (function(){ // 执行代码   console.log("打印成功"); })(); 上面代码是什么意思呢? 可以先把上面的代码分几个部分: 第一部分是括号里面的匿名函数,第二部分是加上括号的匿名函数,第三部分带上最后面执行用的括号。

类和对象

[亡魂溺海] 提交于 2020-02-25 12:44:04
一 基本概念 1.类、对象、成员变量(属性)、成员函数 2.面向对象三大概念:封装、继承、多态 3.编程实践:类的定义和对象的定义,对象的使用 二 类的封装 (1)封装(Encapsulation) A)封装,是面向对象程序设计最基本的特性。把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类与对象实现的。 B)封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 备注:有2层含义(把属性和方法进行封装 对属性和方法进行访问控制) C++中类的封装 成员变量,C++中用于表示类属性的变量 成员函数,C++中用于表示类行为的函数 (2)类成员的访问控制 在C++中可以给成员变量和成员函数定义访问级别 Public修饰成员变量和成员函数可以在类的内部和类的外部被访问 Private修饰成员变量和成员函数只能在类的内部被访问 //类是把属性和方法封装 同时对信息进行访问控制 //类的内部,类的外部 //我们抽象了一个类,用类去定义对象 //类是一个数据类型,类是抽象的 //对象是一个具体的变量。。占用内存空间。 class Circle { public : double r ; double s ; public : double getR ( ) { a ++ ; return r ; } void setR (

linux中shell变量$#,$@,$0,$1,$2

╄→гoц情女王★ 提交于 2020-02-25 12:14:40
linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 $# 添加到Shell的参数个数 $0 Shell本身的文件名 $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 我们先写一个简单的脚本,执行以后再解释各个变量的意义 # touch variable # vi variable 脚本内容如下: #!/bin/sh echo "number:$#" echo "scname:$0" echo "first :$1" echo "second:$2" echo "argume:$@" 保存退出 赋予脚本执行权限 # chmod +x variable 执行脚本 # ./variable aa bb number:2 scname:./variable first: aa second:bb argume:aa bb 通过显示结果可以看到:

学习之shell脚本

做~自己de王妃 提交于 2020-02-25 11:40:44
第一行:#!/bin/bash --> #! 标记脚本的解释器 脚本: #!/bin/bash     echo "hello world" 赋予执行权限 chmod +x ./test.sh 执行脚本:./test.sh 定义变量 时不需要 $ 符号 :td='date "+%y%m%d"' 1.变量名和符号之间不能有空格 2.首个字符必须为字母 3.中间不能有空格,可以使用划线(_) 4.不能使用标点符号和 bash 中的关键字 除了显示赋值,还可用语句直接给变量赋值 for file in 'ls /etc' 将 /etc目录下的文件名循环出来 使用一个定义过的变量,只需在变量名前加上 $ 符号即可 echo $td 或 echo ${td} 对同一个变量名,可以进行二次赋值 eg: td='date "+%m%d"' 只读变量:readonly 定义变量为只读变量,变量值不可更改 url="http://www.baidu.com" readonly url url="http://www.tx.com" --> 报错 删除变量: unset variable_nae,不能删除只读变量 shell存在三种变量:①局部变量:脚本或命令中定义,仅在当前脚本有效           ②环境变量:所有程序有效           ③shell变量:由shell程序设置的变量

shell编程基础

纵饮孤独 提交于 2020-02-25 11:35:07
运行Linux程序有三种方法: 1.直接运行(文件具有可执行权限): ./test.sh 2.调用命令解释器执行程序: /bin/bash test.sh 3.使用source执行程序: source test.sh 一个简单的shell程序——test.sh: #! /bin/bash # shell脚本以#!开始,/bin/bash告诉shell应该选择哪个解释器解释这个脚本 cd test echo "Hello" 三种方法均会输出“hello”无疑,但是用pwd查看当前路径是否改变时: keegen@keegensCP:~$ pwd /home/keegen keegen@keegensCP:~$ ./test.sh Hello keegen@keegensCP:~$ pwd /home/keegen keegen@keegensCP:~$ /bin/bash test.sh Hello keegen@keegensCP:~$ pwd /home/keegen keegen@keegensCP:~$ source test.sh Hello keegen@keegensCP:~/test$ pwd /home/keegen/test 可以看出,第三种方法和前面两种方法是不同的,用source执行程序目录发生了改变! Linux shell可执行命令有三种:内建命令

JAVA面试宝典-基础篇(二)

爱⌒轻易说出口 提交于 2020-02-25 11:09:01
11 、 "==" 和 equals 方法究竟有什么区别? (单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚) == 操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用 == 操作符。 如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如 Objet obj = new Object(); 变量 obj 是一个内存, new Object() 是另一个内存,此时,变量 obj 所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用 == 操作符进行比较。 equals 方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码: String a=new String("foo"); String b=new String("foo"); 两条 new 语句创建了两个对象,然后用 a,b 这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即 a 和 b

oracle PL\\SQL块和复合类型

泄露秘密 提交于 2020-02-25 11:04:20
2018-12-04 PL\SQL程序块由三个部分组成: 声明部分、执行部分、异常处理部分 。 其结构如下:    declare     /*声明部分:说明要用到得变量,类型及游标,以及局部存储过程和函数*/       /*变量的定义和系统保留字要区分开(sql server 中可用@  PL\SQL不能用@)*/   begin     /*执行部分:过程及SQL语句*/       /*必须有*/   exception     /*异常处理部分:错误处理*/   end; PL/SQL中除了一些常见的变量类型外,还有复合类型   复合类型分为记录和表    记录 :由单行多列的标量构成的复合结构。可以看做是一种用户自定义数据类型。将一个或多个标量封装成一个对象进行操作。是一种临时复合对象类型。     语法:         type record_type is record(         Field1 type1 [not null] [:= exp1],         Field1 type1 [not null] [:= exp2],         ...         Fieldn typen [not null] [:= expn]);       其中可以用%type和%rowtype 来为声明的变量快速指明类型。          %type—

C语言求n的阶乘(n!)

梦想的初衷 提交于 2020-02-25 08:11:01
从键盘输入一个数,求出这个数的阶乘,即 n!。 算法思想 首先要清楚阶乘定义,所谓 n 的阶乘,就是从 1 开始乘以比前一个数大 1 的数,一直乘到 n,用公式表示就是:1×2×3×4×…×(n-2)×(n-1)×n=n! 具体的操作:利用循环解决问题,设循环变量为 i,初值为 1,i 从 1 变化到 n;依次让 i 与 sum 相乘,并将乘积赋给 sum。 ① 定义变量 sum,并赋初值 1。 ② i 自增 1。 ③ 直到 i 超过 n。 程序代码 #include <stdio.h> int main () { int i ,n ; double sum = 1 ; scanf ( "%d" ,&n ); for (i = 1 ;i <=n ;i ++) sum =sum *i ; printf ( "%d!=%lf" ,n ,sum ); printf ( " \n " ); return 0 ; } 调试运行结果 输入 5,对应的阶乘输出情况如下所示; 5 5!=120.000000 输入20,对应的阶乘输出情况如下所示: 20 20!=2432902008176640000.000000 总结 ① 由于阶乘一般较大,会超出整型甚至是长整型所能表示的范围,因此定义变量时就不能定义为整型,而应该考虑双精度数。 ② 实训中定义了一个双精度型的变量,用来存放结果

迭代算法

泄露秘密 提交于 2020-02-25 07:11:48
转自: http://www.cnblogs.com/jessy/articles/2455226.html 迭代算法 军人在进攻时常采用交替掩护进攻的方式,若在数轴上的点表示A,B两人的位置,规定在前面的数大于后面的数,则是A>B,B>A交替出现。但现在假设军中有一个胆小鬼,同时大家又都很照顾他,每次冲锋都是让他跟在后面,每当前面的人占据一个新的位置,就把位置交给他,然后其他人再往前占领新的位置。也就是A始终在B的前面,A向前迈进,B跟上,A把自己的位置交给B(即执行B = A操作),然后A 再前进占领新的位置,B再跟上……直到占领所有的阵地,前进结束。像这种两个数一前一后逐步向某个位置逼近的方法称之为迭代法。 迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。 利用迭代算法解决问题,需要做好以下三个方面的工作: 一、确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。 二、建立迭代关系式。所谓迭代关系式

js闭包

痴心易碎 提交于 2020-02-25 00:37:34
1.闭包的三个条件 (1)函数内嵌套函数,外部函数直接或间接返回内部函数 (2)内部函数可以引用外部函数的参数或变量 (3)形成一个不会被销毁的函数空间,也就是说参数和变量不会垃圾回收机制回收 2.什么是闭包空间 满足了以上三个条件,我们就管外部函数的执行空间叫做闭包空间,把返回的内部函数叫做外部函数的闭包函数 3.闭包的特点 优点: (1)延长了变量的生命周期 (2)可以访问函数内部的私有变量 (3)保护了私有变量 缺点: 因为闭包的执行空间不会被销毁,所以会一直占据内存,可能会造成内存溢出,因此不到万不得已不要使用闭包。 4.作用 当需要延长变量的生命周期的时候,或者需要访问函数的私有变量时使用 闭包代码: //外部函数a function a() { var num = 100 //内部函数b return function b() { console.log(num) } } var res=a();//接受到内部函数b res();//执行函数b,输出num 来源: CSDN 作者: 渴望叮当猫的鱼 链接: https://blog.csdn.net/qq_44454898/article/details/104486657