我们都知道JavaScript中的var,在本系列的 JavaScript学习系列2一JavaScript中的变量作用域 中,我们详细阐述了var声明的变量的作用域 文章中提到,JavaScript中没有块级作用域(由{}限定的作用域), 也就是说JS中变量的作用域只有两种,一种是全局作用域,另一种就是函数作用域 但是,其实在ES6中,新增了let命令,改变了这种状况,它为JavaScript增加了块级作用域. ES6中还有一个const命令. 我们现在来看看它们 一个简单的例子 { let a…
今天,我们来说一说JavaScript中的运算符,首先我们来讲一讲 一元运算符 JavaScript中的一元运算符有以下几种 1. delete delete 运算符主要用于删除对以前定义的对象属性或者方法的引用, 举个例子如下 var myObj = new Object(); // 这一句和 var myobj = new Object(); 等价 myObj.name = "Luke"; alert(myObj.name); // 输出 "Luke" dele…
JavaScript中有8个关系运算符,分别是 ===, !===, ==, !=, <, <=, >, >= 1. 恒等运算符 (===) ===也叫做 严格相等运算符,它要求比较的双方,值和类型都完全相同 如果两个值都是undefined, Null, Boolean, Number, String相同原始类型的值,值相同,就返回true, 否则,就返回false console.log(undefined === undefined); //true console.log(…
在JavaScript中, ES6开始有rest参数 和 三个点扩展运算符 (spread运算符) 我们来看看他们各自的用处 1. rest参数 rest参数的形式为 ...变量名           用于获取函数调用时传入的参数.  顾名思义, rest参数表示的是除了明确指定的参数外,剩下的参数的集合, 它的类型是Array 举个例子如下 function restFunc(...args) { return args.length; } restFunc('This','is','rest…
程序开发中,涉及到的内存生命周期基本是一样的,分为以下三步 1. 分配需要的内存 2. 使用分配到的内存 3. 释放其内存    ----什么时候释放内存,以及需要释放哪些变量的内存, 就是垃圾回收机制的事情了. JavaScript有自带的垃圾收集器,它负责跟踪内存的分配和使用,当发现已经分配的内存不再使用时,就负责自动释放它. JavaScript的垃圾收集器会按照固定的时间间隔, 或者代码执行过程中预定的收集时间,周期性的来执行这一操作. JavaScript中,局部变量的作用范围是函数内…
在实际项目开发中,目前还是很少使用到JavaScript 中的arguments对象,那么它到底是干什么用的呢 arguments是JavaScript中的一个类数组对象,它代表传给一个正在执行的函数function的参数列表. 看完这个定义,需要明白,它是一个对象,不是一个数组,但是它这个对象却又类似数组,也就是说样子和数组类似. 那它的内容,它里面的内容是传递给正在执行的函数Function的参数列表 上面都特别强调,是 正在执行的函数function,这也就是说,arguments对象只有…
JavaScript学习(1)之JavaScript基础 由于工作原因,开发语言逐渐以JavaScript为主,所以,抽空学习了下JavaScript语法.等现阶段的工作稳定之后,陆续会分享下自己在学习和开发过程中的一些经验总结.本着"技多不压身"的原则以及对各种编程语言的热爱,虽然笔者一直从事游戏开发工作,也愉快而又义无反顾的加入了JavaScript阵营. 1.JavaScript概述以应用范围 1.1 JavaScript概述 首先,JavaScript是一门动态类型的编程语言.…
一个热爱技术的菜鸟...用点滴的积累铸就明日的达人 正文 如果真的想学好一门语言,那么一定要了解它内存模型,本篇文章就带你走进JavaScript的内存模型,由于本人才疏学浅,若有什么表述有误的地方,欢迎各位看官能够指点一二,在此不胜感激... 在阅读这边文章之前,默认您已经掌握了JavaScript的基本概念.栈堆等基本数据结构以及计算机基本理论基础,如有了解欠缺,请移步相关博客后再阅读本文. 一.基本的数据类型的内存结构 首先粗略的介绍一下JavaScript中五种基本的数据类型Undefi…
这个系列博客主要用来记录本人学习JavaScript的笔记,从0开始,即使有些知识我也是知道的.但是会经常忘记,干脆就写成博客,没事的时候翻来看一看,留下一点学习的痕迹也好.可能写博客的水平暂时不太好,但是慢慢来吧! 想要走前端开发的路,JavaScript是最核心的内容,必须熟练掌握,尽量不要急于求成,把一些东西理解得比较透彻再去接触像vue之类的一些框架,不然学了也等于白学.好,废话不多说,直接开始JavaScript的学习. 首先JavaScript是解释型语言,和Java语言不一样,不需…
..对于网页而言,Javascript无处不在,对于英语不好的人它简直是噩梦般的存在,但形式所逼,今天开始着手学习!希望自己能坚持下去.从什么地方着手,我的目标是从大处着眼,从应用着眼,不抠细节,反正细节也记不住,到用到的时候在抠.尽管编程是外行,也积累了一些常识,所以就从javascript的特点开始学习. 一.什么是Javascript?JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有相对安全性的客户端脚本语言.这个定义非常好,几乎涵盖了Java…
一.变量可以使用短名称(比如 x 和 y),也可以使用描述性更好的名称(比如 age, sum, totalvolume). 变量必须以字母开头 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做) 变量名称对大小写敏感(y 和 Y 是不同的变量) 提示:JavaScript 语句和 JavaScript 变量都对大小写敏感. 二.可以在一条语句中声明很多变量.该语句以 var 开头,并使用逗号分隔变量即可: var name="Gates", age=56, job="…
一.DOM DOM全称为document object model(文档对象模型). 此处的文档指当前HTML文档,对象指HTML标签. 当网页被加载时,浏览器会创建页面的文档对象模型. 下面结合具体的例子理解文档对象模型.  图片来自:w3school JavaScript HTML DOM <html> <head> <!--元素--> </head> <body> <!--属性,属性值---> <a href = &quo…
什么是BOM BOM是browser object model的缩写,简称浏览器对象模型 BOM提供了独立于内容而与浏览器窗口进行交互的对象 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性 BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C BOM最初是Netscape浏览器标准的一部分 BOM结构图 BOM对象包括 window对象 是BOM的顶层(核心)对象,所…
关系运算符 - 关系运算符用来比较两个值之间的关系的 >.<.<=.>= 先说这四个.如果关系成立则返回true,关系不成立则返回false. - 如果比较的两个值是非number类型值,会将其转换为number类型值然后再比较.特殊情况:如果比较的两个值都是字符串,此时会比较字符串的Unicode编码,而不会转换为number. 其实就按正常逻辑的理解来就行了,就两个数比较,是对的表达式就返回true,不对就返回false,不管谁和NaN比较都是返回false. 如果两边都是st…
运算符(操作符) 在JS中 +.-.*./.%这些都是算数运算符,typeof也是一个运算符,它的操作结果就是得到一个描述变量数据类型的字符串. + 运算符 1.两个值在都没有string类型的值的情况下相加,如果都是number类型,则做数学加法运算,如果存在非number类型的,会把它先转换为number类型再做数学加法. 其实,在没有string类型的情况下,又除开number类型以外,基本数据类型中就剩 boolean.undefined.null这三个数据类型了. number+num…
逻辑运算符 ! 非 - 非运算可以对一个布尔值进行取反,true变false false边true - 当对非布尔值使用!时,会先将其转换为布尔值然后再取反 - 我们可以利用 !! 来将其他的数据类型转换为布尔值(隐式转换) 首先null赋值给变量a,通过!a运算后,null转换为了boolean值true,然后再一次!a,值变为false.null值变成boolean值就是false,所以通过两次非运算也能将一个其他类型的值转换为boolean类型的值,原理和Boolean()函数是一样的.…
在写这篇文章之前,再次提醒一下 JavaScript 是大小写敏感的语言 // 'test', 'Test', 'TeSt' , 'TEST' 是4个不同的变量名 JavaScript中的变量,最重要的就是它的作用域, JS中变量的作用域其实就是函数作用域 比如我们的浏览器,在JavaScript中,它就是一个被实例化的window对象, 如果我们在window下面定义一个name字段, 那么name字段就具有window这个函数的作用域, 也就是说在整个window下面是可以访问这个name字…
JavaScript中有6种数据类型 一.基本数据类型 - String 字符串 JS中的字符串需要使用引号引起来双引号或单引号都行 但是要注意的是某种引号嵌套使用的话,需要加上 \ 转义.比如说我们要输出一句话. var str="面试官问我:"你在学校最有价值的经历是什么?"" 这样使用引号是会报错的. 报错原因:你在学校最有价值的经历是什么?这一句首先没有被引号括起来,被识别为标识符,并且是非法的. var str="面试官问我:\"你在学…
-强制类型转换为String 1.方式1 调用被转换数据的toString()方法 number类型值.布尔类型值.都可以调用toString()方法强制转换.但是null值和undefined值不行,这两个类型的值没有toString()方法. 补充一下toString方法的知识,其实还可以当一个简单的进制转换器,因为是初学阶段,所以对于这个方法的学习后续再继续补充. 十进制装换为其他进制. .toString(2)表示转换为2进制 .toString(8)表示转换为8进制 .toString…
方法 - 听了不少调用什么什么方法,所以方法究竟是啥东西? - 如果一个函数作为一个对象的属性保存,那么我们称这个函数时这个对象的方法,调用这个函数就说调用对象的方法(method). 创建一个对象 var obj = new Object(); 添加属性 obj.name = "maoweizhao"; obj["age"] = ; 对象的属性值可以是任何的数据类型,所以保存函数. obj.sayName = function(){ console.log(obj…
数的形参(形式参数) - 定义函数时,可以在()中定义一个或多个形参,形参之间使用英文逗号隔开:定义形参就相当于在函数内声明了对应的变量但是并不赋值,形参会在调用时才赋值. 函数的实参(实际参数) - 调用函数时,可以在()传递实参,传递的实参会赋值给对应的形参. - 调用函数时JS解析器不会检查实参的类型和个数. 如果实参的数量大于形参,多余实参将不会赋值 如果实参的数量小于形参,则没有对应实参的形参将会赋值undefined,如下a的值为1,形参b没有实参值为undefined:a+b结果为…
函数(Function) - 函数也是一个对象,也具有普通对象的功能 - 函数中可以封装一些代码,在需要的时候可以去调用函数来执行这些代码:当调用函数时,函数中封装的代码会按照顺序执行. - 使用typeof检查一个函数时会返回function - 创建函数有三种方式 1.通过构造函数方式:实际开发中基本不用 var fun = new Function("console.log('Hello 这是我的第一个函数');"); 2.函数声明方式 function 函数名([形参1,形参2…
对象的基本操作 - 创建对象 - 方式一:使用new关键字调用的函数,是构造函数(constructor),构造函数是专门用来创建对象的函数. var obj = new Object(); - 方式二: var obj = {}; - 添加属性 - 属性名:对象的属性名没有任何要求,不需要遵守标识符的规范,但是还是尽量按照标识符规范去写. - 属性值:可以任意的数据类型. - 方式一:在对象中保存的值称为属性.语法:对象.属性名 = 属性值; obj.name = "mao"; ob…
对象 对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性.除了那5种基本数据类型,就是对象. 分类:1.内建对象- 由ES标准中定义的对象,在任何的ES的实现中都可以使用- 比如:Math String Number Boolean Function Object.... 2.宿主对象- 由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象- 比如 BOM DOM 3.自定义对象- 由开发人员自己创建的对象…
break关键字 -break关键字可以用来退出switch或循环语句 -不能在if语句中使用break和continue,但不是说if语句里面不能写break关键字,break关键字一定要包含在switch或循环语句中. 正确的: for(var i= ; i< ; i++){ console.log(i); if(i == ){ break; } } 错误的: if(i == ){ break; } -break关键字,默认会立即终止离他最近的那个循环语句 例如下面的这段代码,默认是会退出内…
常量:就是改变不了的,也是可以直接使用的. 变量:可以改变的,不确定的. var =123456; 通过 var 声明一个变量,同时赋值给它 标识符:在JS中所有的可以自主命名的内容,都可以认为是一个标识符, -比如:变量名.函数名.属性名 -规范: 1.标识符中只可以含有字母.数字._.$ 2.标识符不能以数字开头 3.标识符不能是JS中的关键字和保留字 4.标识符一般采用驼峰命名法 其实在JS底层,保存标识符采用Unicode编码,理论上utf-8含有的内容都可以作为标识符 var 中文=1…
匿名函数 - 用函数声明的方式创建一个函数时,不加函数名称. function sum(){ console.log("我是函数sum")} - 不加名称,这样写浏览器是会报错的. function(){ console.log("这是一个匿名函数")} - 正确写法,在外面加(),浏览器不会报错,但是要如何执行? ( function(){ console.log("这是一个匿名函数"); }) - 在后面再加()就运行了,代码运行到那块了,执…
for循环 - 语法: for(①初始化表达式 ; ②条件表达式 ; ④更新表达式){ ③语句... } - 执行流程: 首先执行①初始化表达式,初始化一个变量,(这里只会执行一次) 然后对②条件表达式进行求值判断,如果为false则终止循环 如果判断结果为true,则执行③循环体 循环体执行完毕,执行④更新表达式,对变量进行更新. 更新表达式执行完毕重复②…
循环语句 - while循环 - 语法: while(条件表达式){ 语句... } - 执行流程: while语句在执行时,会先对条件表达式进行求值判断, 如果判断结果为false,则终止循环 如果判断结果为true,则执行循环体 循环体执行完毕,继续对条件表达式进行求值判断,依此类推 - do...while循环 - 语法: do{ 语句... }while(条件表达式) - 执行流程 do...while在执行时,会先执行do后的循环体,然后在对条件表达式进行判断, 如果判断判断结果为fa…
条件判断语句 - 条件判断语句也称为if语句 - 语法一: if(条件表达式){ 语句... } - 执行流程: if语句执行时,会先对条件表达式进行求值判断, 如果值为true,则执行if后的语句 如果值为false,则不执行 - 语法二: if(条件表达式){ 语句... }else{ 语句... } - 执行流程: if...else语句执行时,会对条件表达式进行求值判断, 如果值为true,则执行if后的语句 如果值为false,则执行else后的语句 - 语法三: if(条件表达式){…