函数声明

从零开始的JS生活(一)——JS简介、变量及基本结构

爱⌒轻易说出口 提交于 2020-02-18 04:06:05
本K在经过三个静态站制作的狂风暴雨之后,终于开始了JavaScript的学习。作为一只从来没有正儿八经接受过计算机语言的小白,居然能够跟上浩哥的课程进度,我的内心都被我的才智震惊到了,果然本K是天生丽质难自弃,天生我材必有用哇,哦呵呵~ 咳咳,废话不多说,咱们来开始我们的JS小课堂,希望能够帮助到跟我一样的第一次接受计算机语言的同志们。 一、什么是JS。 JavaScript,简称JS,它是一种基于浏览器的、基于对象的、用于事件驱动的脚本语言。简单来说,JS就是用来实现html页面上的一些动态效果的语言。它的作用有很多,它可以进行表单的验证,可以添加页面的动态效果,可以动态更改页面的内容,也可以通过Ajax来实现页面的局部更新。 二、JS的组成部分。 JS主要有三大部分组成。 1、ECMAScript语法标准,简称ES标准,它规范了JS中的语法、变量和数据类型、运算符、逻辑控制语句等重要内容。 2、BOM,浏览器对象模型,包括history(历史)、document(文档)、location(地址)等浏览器相关的重要信息。 3、DOM,文档对象模型,它的重要内容可以概括为“节点”,节点可以是html中的任意一个标签,像是head,body就是html文档中的两个节点,两者以下的所有分支都可以形成非常具有层次性的节点层。 三、JS的基本结构与使用方式 1、基本结构

JavaScript 中的函数与作用域

自闭症网瘾萝莉.ら 提交于 2020-02-17 08:53:02
一、声明提升 大部分编程语言都是先声明变量再使用,但在 JavaScript 中,有些不一样: console . log ( username ) ; // undefined var username = 'JavaScript' ; 上面的代码会正常输出 undefined 而不是报错 Uncaught ReferenceError: a is not defined 。就是因为声明提升( declaration hoisting )。 那为什么输出的是 undefined 而不是 JavaScript 呢? 因为 JavaScript 只有变量的声明会提升,初始化不会。 再看段代码: a = 2 ; var a ; console . log ( a ) ; // 2 同样是因为变量提升的原因,所以输出的是 2 而不是 undefined 。 JavaScript 引擎会在解释 JavaScript 代码之前首先对其进行编译。编译阶段中的一部分工作就是找到所有的声明,并用合适的作用域将它们关联起来。因此,包括变量和函数(我们后面会再次提到)在内的所有声明都会在任何代码被执行前首先被处理。 JavaScript 在读到 var a = 2; 时,会将其看成两个声明: var a; 和 a = 2; 。第一个定义声明是在编译阶段进行的;第二个赋值声明会被留在原地等待执行阶段。

js9大陷阱

假装没事ソ 提交于 2020-02-16 20:57:09
1. 区分大小写:变量名、属性和方法全部都区分大小写 2. 不匹配的引号、圆括号或花括号将抛出错误 3. 条件语句:3个常见陷阱 4. 换行:一直用分号结束语句来避免常见的换行问题 5. 标点法:在对象声明的尾部逗号将导致出错 6. HTML id 冲突 7. 变量作用域:全局变量对局部变量 8. 函数重载:当重载不存在时,覆盖函数 9. 区分string.replace()函数不是全局的 10. parseInt应该包含两个参数 11. “this”和绑定问题 12. 为参数设置默认值,以免你遗漏它们 13. for each循环是用于对象而不是数组 14. switch语句需要点技巧 15. 总是在检查undefined前检查null 16. 时间处理陷阱 区分大小写 变量名和函数名都是区分大小写的。就像配错的引号一样,这些大家都知道。但是,由于错误是不作声的,所以这是一个提醒。为自己选择一个命名规则,并坚持它。而且,记住 源码 外你会少一些顾虑:所以当移动代码且最终导致两个语句在一行时,你无需担心第一个语句是否正确结束。 多余的逗号 在任何JavaScript对象定义中,最后一个属性决不能以一个逗号结尾。 Firefox 不会出错,而IE会报语法错误。 var theObj = { city : "Boston", state : "MA",//IE6和IE7中有“缺少标识符

js9大陷阱

99封情书 提交于 2020-02-15 07:59:10
1. 区分大小写:变量名、属性和方法全部都区分大小写 2. 不匹配的引号、圆括号或花括号将抛出错误 3. 条件语句:3个常见陷阱 4. 换行:一直用分号结束语句来避免常见的换行问题 5. 标点法:在对象声明的尾部逗号将导致出错 6. HTML id 冲突 7. 变量作用域:全局变量对局部变量 8. 函数重载:当重载不存在时,覆盖函数 9. 区分string.replace()函数不是全局的 10. parseInt应该包含两个参数 11. “this”和绑定问题 12. 为参数设置默认值,以免你遗漏它们 13. for each循环是用于对象而不是数组 14. switch语句需要点技巧 15. 总是在检查undefined前检查null 16. 时间处理陷阱 区分大小写 变量名和函数名都是区分大小写的。就像配错的引号一样,这些大家都知道。但是,由于错误是不作声的,所以这是一个提醒。为自己选择一个命名规则,并坚持它。而且,记住 源码 外你会少一些顾虑:所以当移动代码且最终导致两个语句在一行时,你无需担心第一个语句是否正确结束。 多余的逗号 在任何JavaScript对象定义中,最后一个属性决不能以一个逗号结尾。 Firefox 不会出错,而IE会报语法错误。 var theObj = { city : "Boston", state : "MA",//IE6和IE7中有“缺少标识符

js代码预解析

为君一笑 提交于 2020-02-13 10:29:07
1、var一般用于声明变量,预解析代码的时候,等号后面的赋值过程不会执行,所以预解析时的var变量都是未定义的 2、function声明的函数,预解析的时候,值就是函数里面的内容 例:console.log(c)   var c = 1;   console.log(c)   function c( ){console.log(2)}   预解析过程:var c;       function c( ){console.log(2)};       console.log(c)  // function c( ){console.log(2)};       c = 1;       console.log(c)  // 1        来源: https://www.cnblogs.com/cuishuangshuang/p/12302385.html

MSP430C的关键字

安稳与你 提交于 2020-02-13 09:33:43
C89关键字:共32个关键字 修饰类型 (8):auto-static-extern-register signed-unsigned const volatile 基本类型 (7):void short-long char-int float-double 复合类型 (4):typedef struct union enum 计算类型 (1):sizeof 判断语句 (7):if-else switch-case -default goto-return 循环语句 (5):for do-while break-continue 具体说明: C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。 1 数据类型关键字(12个): (1) char :声明字符型变量或函数 (2) double :声明双精度变量或函数 (3) enum :声明枚举类型 (4) float:声明浮点型变量或函数 (5) int: 声明整型变量或函数 (6) long :声明长整型变量或函数 (7) short :声明短整型变量或函数 (8) signed:声明有符号类型变量或函数 (9) struct:声明结构体变量或函数 (10) union:声明共用体(联合)数据类型 (11) unsigned:声明无符号类型变量或函数 (12) void

2020.2.12线上笔记

五迷三道 提交于 2020-02-12 16:37:13
1.实参和形参的关系  定义函数时带的参数是 形参 ,调用函数带的参数是 实参 。  参数可以是任意类型。  调用函数的时候,实参可带可不带。带了就是给形参赋值,不带就是undefined。  形参的个数可以大于实参的个数,但是实参的个数不能大于形参的个数。 2.函数的作用域  1.把带有var声明的变量和function声明的函数存到私有空间中去。var声明的存储了不定义,function声明的既存储了也定义了。  2.代码从上到下执行,只执行语句。在操作变量的时候去私有空间中查找,如果找到看定义没有,定义了就使用后面的值,没定义值   就是undefined;如果没找到,就向上一级查找,有就使用,没有继续向上一级查找。直到找到window下为止。找到就使用,没找到   就报错。 来源: https://www.cnblogs.com/lfive7/p/12299228.html

js预编译

人走茶凉 提交于 2020-02-12 08:14:01
我们都知道js执行遵循两个规则 1.函数声明整体提升 2.变量 声明提升 其实还有一点最重要的就是预编译,预编译往往发生在函数执行前,了解预编译,对我们理解函数执行非常关键。 预编译的前奏 1.imply global暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就为全局属性所有。 2.一切声明的全局变量,全是window的属性。 下面就先看几个例子吧 例1 function fn(a){   console.log(a);   var a = 123; console.log(a);   function a(){};   console.log(a);   var b = function(){};//这是函数表达式,不是函数声明(var b属于变量声明)   console.log(b);   function d(){} } fn(1); 1.创建AO对象 AO{ } 2.查找函数形参及函数内变量声明,形参名及变量名作为AO对象的属性,值为undefined AO{   a:undefined;   b : undefined; } 3. 实参形参相统一,实参值赋给形参 (即把实参的值赋给形参,并不执行函数内的赋值) AO{   a:1;   b : undefined; } 4. 查找函数声明,函数名作为AO对象的属性,值为函数体 AO{    a

让自己习惯C++

ぐ巨炮叔叔 提交于 2020-02-11 21:14:24
  所谓声明式是告诉编译器某个东西的名称和类型,但是略去细节。   每个函数的声明式揭示其签名式,也就是参数和返回类型,一个函数的签名等同于该函数的类型。   定义式的任务是提供声明式所遗漏的一些细节,对对象而言,定义式是编译器为此对象拨发内存地点,对function或function template而言,定义式提供了代码本体,对class或class template而言,定义式列出了他们的成员。   初始化是“给予对象初值的过程”,对用户自定义类型的对象而言,初始化由构造函数执行。   default构造函数是一个可被调用而不带任何实参者,这样的函数要不没有参数,要不每个参数都有缺省值。copy构造函数被用来“以同型对象初始化自我对象”,copy assignment操作符是被用来从一个同型对象中拷贝值到自我对象,区别在于有没有个新对象被定义。 条款01:视C++为一个语言联邦 C:说到底C++仍是以C为基础。区块,语句,预处理器,内置数据类型,数组,指针统统来自C。 Object-Oreinted C++:这一部分是面向对象设计之古典守则在C++上的最直接实施。类,封装,继承,多态,virtual函数等等... Template C++:这是C++泛型编程部分。 STL。STL是个template程序库:容器(containers),迭代器(iterators),算法

函数的执行

天大地大妈咪最大 提交于 2020-02-11 19:40:18
函数在声明的时候不会被执行,在被调用的时候才会执行,比如,一个JS函数的参数是回调函数,那么传递的回调函数只是函数的声明,并不会被执行,只有被调用时才会执行。如下JS代码自定义了一个数组过滤器: 来源: https://www.cnblogs.com/-muchen-/p/12295337.html