前面的文章中,我在介绍JS中引用类型的时候提过,JS中函数有两种定义方式 第一种是声明函数,即使用function关键字来声明 第二种就是使用函数表达式,将函数以表达式的形式赋值给一个变量,这个变量就保存了对这个函数的引用 function与表达式的区别前文也已经详细分析过,这里就大概讲解一下 虽然两者在写法上没有什么不同,但是function关键字作为函数声明的时候,与var一样会有变量提升的效果 其本质是在JS创建执行环境的时候,就完成了对函数的声明,所以访问该函数的代码在函数声明语句前就可…
昨天写了闭包 今天就来聊聊块级作用域的事情 在绝大多数编程语言中,都有块级作用域这个概念 什么是块级作用域呢? 前面我们在刚开始讲的时候说过,JS中的大括号(不在赋值运算符的后面)表示代码块 块级作用域,指的就是这种代码块作用域 在其它类C的语言中,都拥有块级作用域 块级作用域 最常见的例子就是,在有块级作用域的语言中循环中声明的 i 只在当前的循环中可以访问,并不会污染全局变量 JS就不一样了,循环结束后 i 在循环的外部依然可以访问 for(var i = 0; i < 10; i++){…
私有变量 严格来讲,JS中没有私有成员的概念,所有对象属性都是公有的. 但是JS中有私有变量的概念 所有在函数中定义的变量都可以认为是私有变量,因为不能在函数外部进行访问 私有变量包括 1.函数参数 2.局部变量 3.函数内部定义的其他函数 还有一个概念叫 特权方法 特权方法指的就是有权能够访问私有变量的方法 私有变量和特权方法主要用来隐藏不应该被直接修改的数据 function Person(name){ this.getName = function(){ return name; } th…
昨天的文章中主要记录了,函数表达式与函数声明的区别 以及在JS中如何安全地使用递归 那么既然要深入地理解JS中的函数,闭包就是一个绕不开的概念 闭包 JS高编一书中对闭包的概念定义如下: 闭包是指有权访问另一个函数作用域中变量的函数 我们来理解这句话,闭包指的是一类函数 这类函数的特点是可以访问另一个函数的作用域 我们知道JS中Es6以下是没有块级作用域的 只有全局作用域,以及函数作用域 一般来讲,函数作用域里面的变量在函数外部是无法访问的 而闭包却可以访问另一个函数作用域,那么说明了什么? 说…
递归 function factorial(num){ if(num<=1){ return 1; }else { return num * arguments.callee(num-1); } } console.log(factorial(4)); 但是如果代码是在严格模式下开发: "use strict"; function factorial(num){ if(num<=1){ return 1; }else { return num * arguments.cal…
JS中许多有趣的地方都和函数脱不了联系 那么是什么让JS中的函数这么有趣呢? 我们一起来看看吧 Function类型 在JS中函数实际上就是对象,每个函数都是Function类型的实例,和JS的其他引用类型都拥有属性和方法 正是由于这个原因,函数名实际上就是一个指针,指向函数对象,并不会与函数绑定 函数的声明 创建一个函数一般来说有下面几种方法 // function关键字声明 function sayHello(){ alert("hello"); } // 函数表达式 var sa…
前几天有事耽搁了,今天继续更新 今天的主要内容是JS中的函数 这一篇主要讲函数的定义等内容,至于变量提升.执行环境.闭包.内存回收等内容在后面讲,高玩们可以不用看下面的正文了. 函数 首先来讲,函数对于任何编程语言都是一个十分核心的概念. Js中的函数通过function关键字来声明函数,函数用于封装任意多条语句,可以让我们用函数来来实现某一特定功能,避免编写重复的代码. 使用方法如下: function 函数名(参数){ // 要执行的代码块 } 跟其他语言中的函数相比JS中的函数存在以下特征…
继续记笔记,JavaScript越来越有意思了. 继续... 第三章:JavaScript基础 ECMAScript语法在很大程度上借鉴了C和其它类似于C的语言,比如Java和Perl. 大小写敏感:变量.函数名.操作符都是大小写敏感的,比如“text”和“Text”不同. 标识符: 第一个字符必须是字母.下划线或者美元符号($); 之后的字符可以是字母.下划线.美元符号或者数字. 标识符中的字母可以是ASCII和Unicode字母比如À and Æ,但是不推荐这样使用. 按照惯例,ECMASc…
话不多说,我们直接开始进入今天的主题 流程控制语句 首先什么是流程控制语句呢? 顾名思义,就是控制流程的语句. 在JS中语句定义了ECMAScript中的主要语法,让我们可以使用一系列的关键字来完成指定任务. 语句也是构成一门编程语言旳基础,所以还是有必要记录一下的. 虽然有些语句不常用,但存在即合理 emm if语句 在大多数编程语言中if语句,是最常用的语句 语法如下: if(条件){ 代码块1 }else{ 代码块2 } 当代码块只有一行语句时可以不用添加花括号. 但是在实际使用过程中,最…
前一段时间由于事情比较多,所以笔记耽搁了一段时间,从这一篇开始我会尽快写完这个系列. 文章中有什么不足之处,还望各位大佬指出. JS中的数据类型 上一篇中我写了有关JS引入的Script标签相关的东西. 那么这一篇,我们可以正式进入JS的世界了,emmm 前面的东西应该比较基础,大佬们不喜勿喷. 首先学习一门语言,最开始不出意外的话应该是先了解这门语言由什么类型的数据组成,毕竟语言都是建立在这些数据类型的基础之上的. 在介绍数据类型之前,我先大概说一下 typeof 操作符,这是JS中判断一个变…