函数声明

JavaScript 函数

不羁岁月 提交于 2020-03-04 16:43:37
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。 <!DOCTYPE html> <html> <head> <script> function myFunction() { alert("Hello World!"); } </script> </head> <body> <button onclick="myFunction()">Try it</button> </body> </html> JavaScript 函数语法 函数就是包裹在花括号中的代码块,前面使用了关键词 function: function functionname() { 执行代码 } 调用带参数的函数 在调用函数时,您可以向其传递值,这些值被称为参数。 这些参数可以在函数中使用。 您可以发送任意多的参数,由逗号 (,) 分隔: myFunction(argument1,argument2)  当您声明函数时,请把参数作为变量来声明:  function myFunction(var1,var2) { 代码 } 变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推   <p>点击这个按钮,来调用带参数的函数。</p> <button onclick="myFunction('Harry Potter','Wizard')">点击这里</button>

JavaScript之作用域与闭包详解

点点圈 提交于 2020-03-04 16:25:39
前言: JavaScript是一种应用非常广泛的语言,其也有一些自身特点和优势,本文重在讲述其作用域机制以及闭包,会从一些实例来探讨其机理。 作用域在JavaScript程序员日常使用中有不同的含义,如下所示: this绑定的值; this绑定的值定义的执行上下文; 一个变量的“生命周期”; 变量的值解析方案,或词法绑定。 下面将讲诉JavaScript作用域概念,由此引出变量值解析方案的一般想法,最后再探讨JavaScript里闭包这一重要知识点。 1.全局作用域 所有浏览器都支持 window 对象,它表示浏览器窗口,JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。所以,全局变量是 window 对象的属性,全局函数是 window 对象的方法,甚至 HTML DOM 的 document 也是 window 对象的属性之一。 全局变量是JavaScript里生命周期(一个变量多长时间内保持一定的值)最长的变量,其将跨越整个程序,可以被程序中的任何函数方法访问。 在全局下声明的变量都会在window对象下,都在全局作用域中,我们可以通过window对象访问,也可以直接访问。 1 var name = "jeri"; 2 console.log(window.name); // 输出:jeri 3 console.log(name); // 输出

深入浅出 JavaScript 变量、作用域和内存 v 0.5

时光怂恿深爱的人放手 提交于 2020-03-04 16:25:05
本文主要从原理入手分享变量和作用域的相关知识,最后结合本文所分享知识,再次深入了解下闭包的运行原理。 主要参考《JS高级程序设计》 《JS权威指南》 《高性能 JS》 三本书。 目录 1 变量 1.1 变量的声明 1.2 变量类型的特点 2 执行环境和作用域 3 再谈谈闭包 变量 对 JavaScript 稍微有点了解的同学都知道,JavaScript 中的 变量 与其他语言的变量有很大区别。 JS 的弱类型的特性决定了变量只是在特定时间( 生命周期 , 作用域 中)用于保存特定值的一个名字而已。 一个变量可以在生命周期内任意改变类型。(太灵活了以至于好复杂) JavaScript 变量可以用来保存两种类型的值: 基本类型值 和 引用类型值 。 变量的声明 在JavaScript 程序中,使用一个变量之前应该先声明它。变量使用 var 关键字声明的。 如果在声明的时候没有进行初始化,那么默认初始化为undefined。 重复声明和遗漏声明 使用 var 关键字重复声明变量时合法的而且无害的,如果重复声明带有初始化,那么该声明和一条普通的赋值语句没什么两样。 在非严格模式下,给未声明的变量赋值,JS 会在全局作用域中创建一个同名变量,并赋值。(这会造成很多bug,因此应该使用 var 来声明变量。) 保存引用类型值的变量我们可以为其添加、改变和删除其属性和方法 。 var

js 立即执行函数

本秂侑毒 提交于 2020-03-03 16:06:33
网上查阅后的总结,非原创 一般状况下, 我们需要调用一个JavaScript 函数, 基本的状况都是先定义, 然后再调用。 如果不需要显示调用函数, 让这个函数在定义的时候就执行的话,就可以用到立即执行函数。 立即执行函数的常见写法: 1. (function(){…})() 2. (function(){…}()) 要理解立即执行函数,需要先理解一些函数的基本概念。 函数声明,函数表达式,匿名函数。 以下简单回顾一下: 函数声明: function function_name(args1, arg2, arg3) { // function body } 使用function关键字声明一个函数,再指定一个函数名 ( 在函数声明中,你必须给函数起一个名字 ) ,叫函数声明。 函数表达式: function [function_name](args1, arg2, arg3) { // function body } 这里[function_name]的意思是表示function_name是可以被忽略的。 或是这样的语法形式: var fnName = function () {...}; 函数表达式和函数声明的区别: 如果不声明函数名称,它肯定是表达式,可如果声明了函数名称的话,如何判断是函数声明还是函数表达式呢? ECMAScript是通过上下文来区分的, 如果function

C++ Primer 学习笔记 第七章 类

依然范特西╮ 提交于 2020-03-03 05:59:05
类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程技术,类的接口包括用户所能执行的操作,类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。封装实现了类的接口和实现的分离,封装后的类隐藏了它的实现细节,即类的用户只能使用接口而不能访问实现部分。 类要想实现数据抽象和封装,首先需要定义一个抽象数据类型,在抽象数据类型中,由类的设计者负责考虑类的实现过程,而使用该类的程序员只需要抽象地思考类型做了什么,而无须了解类型的工作细节。 我们可以通过抽象数据类型提供的接口来完成某些操作,但如果一个类没有任何接口供用户使用,只有一些数据成员,那这个类就不是抽象数据类型,一旦定义了一些成员函数供类的用户使用,它就变成了了抽象数据类型。 定义和声明成员函数的方式与普通函数差不多,成员函数的声明必须在类的内部,但它的定义既可以在类的内部,也可以在类的外部。定义在类内部的函数是隐式的inline函数。 Sales_data类: struct Sales_data { string isbn ( ) const { return bookNo ; } Sales_data & combine ( const Sales_data & ) ; double avg_price ( ) const ; string bookNo ; unsigned units

函数指针

跟風遠走 提交于 2020-03-03 00:21:43
函数指针 函数指针指向的是函数而非对象。和其他指针一样,函数指针指向某种特定类型。函数的类型由它的返回类型和形参类型共同决定,与函数名无关。例如: //比较两个string对象的长度 bool lengthCompare(const string&,const string&); 该函数的类型是bool(const string&,const string&).要想声明一个可以指向该函数的指针,只需要用指针替换函数名即可: //pf 指向一个函数,该函数的参数是两个const string的引用,返回值是bool类型 bool (*pf)(const string &,const string &); //未初始化 从我们声明的名字开始观察,pf前面有个*,因此pf是指针;右侧是形参列表,表示pf指向的是函数;再观察左侧,发现函数的返回类型是布尔值。因此,pf就是一个指向函数的指针,其中该函数的参数是两个const string的引用,返回值是bool类型。 注意:*pf两端的括号必不可少,如果不写这对括号,则pf是一个返回值为bool指针的函数: //声明一个名为pf函数,该函数返回bool* bool *pf(const string&,const strng&); 使用函数指针 当我们把函数名作为一个值使用时,该函数自动地转换成指针。例如

JavaScript函数初学心得

早过忘川 提交于 2020-03-02 11:36:12
JavaScript函数初学心得 1.JavaScript函数的声明 JavaScript函数的声明方式有俩种: 1. 赋值式 :先用var定义一个变量,把一个函数值直接赋值给这个变量 var f = function(){ console.log(1); } 这种方式函数只能在声明之后调用,因为这种方式声明的函数,是在函数运行的阶段才赋值给变量f的。 2. 声明式 :使用function关键字来声明一个函数 , 不能漏掉函数名 。 function f(){ console.log(2); } 这种方式在声明函数的作用域内任何地方调用,因为这种方式是咋解析阶段赋值给标识符f的。 注 :当同时使用这俩种方式声明一个函数时,最终执行的是 赋值式声明的函数 代码如下: // 赋值式表达式 var f = function() { console.log(1); } // 声明式 function f (){ console.log(2); } f();// 1 2.JavaScript函数的传参 参数 : 参数分为实参和形参 形参 :形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。 实参 :实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时

sublime使用总结

混江龙づ霸主 提交于 2020-03-02 09:08:13
上周忙呀忙~ 周一到五在忙项目,周六日搬家 在帝都平均一年就要换一次房子,从开始找房子到成功住进去前前后后大约花了半个多月的时间 什么时候就有自己的小窝了…… 之前开发一直用的都是WebStorm,用了一段时间后发现很卡顿,内存占用很大,故而准备选择轻量级的Sublime。 以下是使用过程中的一些总结,持续更新~ 1、安装Sublime Text3,傻瓜式安装,这里就不多说了~ 2、安装Package Control(一个用来管理插件的插件)   ctrl + `打开控制台;将以下代码粘贴到控制台 import urllib.request,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7c0f' + '1e3d39e33b79698005270310898eea76'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf

C++复习知识点总结(二)

独自空忆成欢 提交于 2020-03-02 01:15:28
一:C++多态与虚函数 1:基类的指针也可以指向派生类对象 People *p = new People(“王志刚”, 23) p = new Teacher(“赵宏佳”, 45, 8200);//指向派生类对象 调用函数时会出错(people的函数中没有第三项,及8200的数据),即当基类指针 p 指向派生类 Teacher 的对象时,虽然使用了 Teacher 的成员变量,但是却没有使用它的成员函数 基类指针只能访问派生类的成员变量,但是不能访问派生类的成员函数,C++ 增加了虚函数(Virtual Function)。使用虚函数非常简单,只需要在函数声明前面增加 virtual 关键字。即:virtual 类型 函数名 对于派生类比较多,如果不使用多态,那么就需要定义多个指针变量,很容易造成混乱;而有了多态,只需要一个指针变量 p 就可以调用所有派生类的虚函数。 2:虚函数注意事项及条件 虚函数对于多态具有决定性的作用,有虚函数才能构成多态。 只需要在虚函数的声明处加上 virtual 关键字,函数定义处可以加也可以不加。 基类中的函数声明为虚函数,这样所有派生类中具有遮蔽关系的同名函数都将自动成为虚函数 只有派生类的虚函数覆盖基类的虚函数(函数原型相同)才能构成多态(通过基类指针访问派生类函数)。例如基类虚函数的原型为virtual void func();

C++ 第3章 函数

非 Y 不嫁゛ 提交于 2020-03-01 21:01:07
3.1 函数的定义与使用 3.1.1 函数的定义 函数是面向对象程序设计中,对功能的抽象 类型标识符 函数名(形式参数表) { 语句序列 } 3.1.2 函数的调用 调用前先声明函数原型: 类型标识符 被调用函数名 (含类型说明的形参表); 调用形式 函数名(实参列表) 嵌套调用:函数可以嵌套调用,但不允许嵌套定义。 递归调用:函数直接或间接调用自身 例: #include <iostream> using namespace std; //计算x的n次方 double power (double x, int n); void main(void) { cout << "5 to the power 2 is "<< power(5,2) << endl; } double power (double x, int n) { double val = 1.0; while (n--) val = val*x; return(val); } 运行结果:5 to the power 2 is 25 由于函数power 的定义位于调用之后,所以需要先对函数原型加以声明。 例: 输入一个8位二进制数,将其转换为十进制数输出。1101 2 = 1(2 3 ) + 1(2 2 ) + 0(2 1 ) + 1(2 0 ) = 13 10 所以,如果输入1101,则应输出13 #include