javascript 学习1
1.javaScript允许对任意数据类型做比较,如boolean与number,false==0//true false === 0//false
== 比较:自动转换数据类型进行比较,很多时候得到相当诡异的结果
=== 比较:不会转换数据类型,如果数据类型一致,进行比较,如果数据类型不一致,false;
由于这个缺陷,我们在比较的时候要使用=== 比较,不要使用==比较
2.number 表示,整数,浮点数,NaN :not a number当计算结果无法使用number进行表示的时候就是NaN,infinity 无限,当计算结果超出javascript表示的时候,就会显示这个
3.NaN是个例外,他与所有的值都不相同,包括自己,NaN ===NaN //false 判断是不是NaN 只能靠函数isNaN(),我们以后尽量用Number.isNaN()函数
4,null 与undefined null 表示为空,undefined表示未定义,但是多数情况下,不用区分这两者的区别,平常我们应该用null,undefined 在判读函数参数是否传递的情况下有用
5.数组:数组没有数据类型要求,如[1,"a",NaN,true],我们可以通过索引来访问数组
6.对象:对象是一组键值对,对象的键都是字符串类型,对象的值可以是任何类型,访问对象的属性通过.属性进行访问
7.变量:变量通过=赋值,变量用var声明,变量可以多次赋值,可以不是同一种数据类型,但是var只声明一次即可
8.strict模式:var 在javascript中并不是必须声明的,但是不声明的话,javascript 就会自动声明为全局变量;所以我们在开发中应该使用strict模式,声明使用strict模式,就在我们的JavaScript代码第一行加上'use strict'
9.字符串:
1.多个字符串相连,可以用+号连接起来,跟java一样,也可以使用模板字符串,如:
var name = '小明';
var age = '18';
var message = name +age;或者 var message = `${name}${age}`;注意这里的引号是反引号,不是引号
2.字符串的一些常见操作,大体跟java类似;包括length,index,substring,toUpcase,tolowerCase
10.数组:
1.直接给array的length赋值会导致数组的大小变化,没有数据的位置补undefined
2.通过indexof来搜索指定位置的元素
3.slice 截取数组产生一个新的数组,类似于substring;如果不给slice传递任何参数,他会截取整个,我们可以利用这个特性,复制一个数组
4.push 是向数组后面添加若干元素,pop()是删除数组最后一个元素
5.unshift 向数组的头部添加一个元素,shfit 删除第一个元素
6,sort 对数组进行排序,直接调用时按照默认的进行排序
7.reverse 把数组反转
10.splice,修改数组的万能方法,如splice(2,3,‘1’,‘2’);从索引2开始删除3个元素,再添加两个,是包括前面的索引的,如前面的例子,索引2的元素是被修改了的
11.contact,将两个array拼接在一起,并返回一个新的数组。注意是返回一个新的数组;
12.join 把数组元素用指定的字符串链接起来,并返回一个新的字符串,如join('-'),
11.对象:
1.对象的键如果包括特殊字符,需要用‘’包括起来,而且访问必须用[] 来访问,所以,我们尽量命名标准的键名
2.如果访问一个不存在的属性,不会报错,会返回undefinde
3.可以自由的给对象添加和删除属性
4.可以用in判断一个对象是否拥有某项属性,但是如果该对象的父类也拥有该属性,那么用in判断会返回true;所以我们可以用hasOwnProperty()来判断
12.条件判断:
javascript 把null,0,NaN,undefined,''空字符串视为false,其他的都视为true;
13.循环:
1.var i; for(i=0;i<100;i++)
2.没有条件的循环,for(;;),用这种循环需要语句体里面有break;遇到 Invalid or unexpected token问题,竟然是因为写的代码中英文不一样导致;
3.for in 可以把一个对象的属性都遍历出来,由于array是对象,所以也能用for in 进行遍历
14.map:
初始化map :var map = new Map([key,value],[key,value]);
函数:map.set(key,value)添加 map.has(key)查询 map.get(key) 获取 map.delete(key) 删除
15.函数:
1.定义和调用;
1.JavaScript 允许传入任意个参数,多少都无关系,不会报错。。
2.arguments 只在函数中起作用,指向调用者传入的所有参数,也就是说,函数即使不定义任何参数,我们还是可以拿到调用者传进来的参数,实际上,我们用arguments判断传入参数的个数;
3.reset参数:
2.变量与作用域
1.如果一个变量在函数体内声明,他的作用域就是这个函数体,
2.函数可以嵌套,内部函数可以使用外部函数声明的变量,反之,则不行
3.javascript定义的函数有个特性,就是,函数会先扫描所有声明的变量,并提升到函数顶部,根据这一特性,我们要养成先声明所用用到变量的习惯
4.不在任何函数内定义的变量就具有全局作用域,JavaScript默认有一个全局对象,window
5.任何变量先会在函数体内查找,如果没有找到就会向上查找,只到查到window,也就是全局作用域,如果还没找到,就会报referenceError
3.名字空间
把所有的全局变量或者顶层函数都放到window里面很容易造成命名冲突而且不容易被发现,所以一个办法就是把自己定义的全局变量和顶层函数都放到一个变量里面,比较著名的JavaScript库都是这么干的
4.局部作用域:如我们用循环所需的变量,就是局部,在es6中,用let代替var声明块级变量
5.常量:在es6之前,我们只能变量名大写来表示这是一个常量,不要去修改,在es6中,我们可以用const来声明常量
6.解构赋值
3.高阶函数:
map:对每个元素进行加工
reduce:对两个元素进行加工,这个两个元素中的第一个元素是前面加工后的元素
filter :筛选出元素,参数为函数,函数返回true,保留,返回false,筛选掉
sort:排序,跟java中的compator类似
4.闭包:函数中定义函数,然后函数延迟执行,用来对标类里面的成员变量
5.generator:yeild 暂停函数,
16.标准对象:
1.Date 获取事件对象
2.RegExp 正则
3.Json
17.对象:
1.定义一个对象跟声明一个函数没有差别,但是调用的时候,函数是直接调用,对象需要使用new 构造函数,为了区分二者,在命名的时候一般情况下,对象首字母大写,函数首字母小写
2.我们可以创建一个createObj函数,这样我就不用new了,而且参数也是比较随便的
3.在es6中对象的写法跟java类似,继承的关键字是extends
javascript 学习1的更多相关文章
- JavaScript学习(一) —— 环境搭建与JavaScript初探
1.开发环境搭建 本系列教程的开发工具,我们采用HBuilder. 可以去网上下载最新的版本,然后解压一下就能直接用了.学习JavaScript,环境搭建是非常简单的,或者说,只要你有一个浏览器,一个 ...
- Web编程基础--HTML、CSS、JavaScript 学习之课程作业“仿360极速浏览器新标签页”
Web编程基础--HTML.CSS.JavaScript 学习之课程作业"仿360极速浏览器新标签页" 背景: 作为一个中专网站建设出身,之前总是做静态的HTML+CSS+DIV没 ...
- JavaScript学习(3):函数式编程
在这篇文章里,我们讨论函数式编程. 什么是函数式编程?根据百度百科的描述,“函数式编程是种编程典范,它将电脑运算视为函数的计算.函数编程语言最重要的基础是 λ 演算(lambda calculus). ...
- JavaScript学习(2):对象、集合以及错误处理
在这篇文章里,我们讨论一下JavaScript中的对象.数组以及错误处理. 1. 对象 对象是JavaScript中的一种基本类型,它内部包含一些属性,我们可以对这些属性进行增删操作. 1.1 属性 ...
- JavaScript学习13 JavaScript中的继承
JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式 ...
- JavaScript学习12 JS中定义对象的几种方式
JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...
- JavaScript学习11 数组排序实例
JavaScript学习11 数组排序实例 数组声明 关于数组对象的声明,以前说过:http://www.cnblogs.com/mengdd/p/3680649.html 数组声明的一种方式: va ...
- JavaScript学习10 JS数据类型、强制类型转换和对象属性
JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...
- JavaScript学习09 函数本质及Function对象深入探索
JavaScript学习09 函数本质及Function对象深入探索 在JavaScript中,函数function就是对象. JS中没有方法重载 在JavaScript中,没有方法(函数)重载的概念 ...
- JavaScript学习08 Cookie对象
JavaScript学习08 Cookie对象 JavaScript Cookie Cookie对象: Cookie是一种以文件的形式保存在客户端硬盘的Cookies文件夹中的用户数据信息(Cooki ...
随机推荐
- MYSQL两个数据库字符集保持一致问题
参考这篇文章:https://lzw.me/a/mysql-charset.html 还有一篇官方文档:https://dev.mysql.com/doc/refman/5.7/en/charset. ...
- Selenium IDE 宏 试用 一例
本质是宏(Macro)理念 Marco概念的广泛应用: 1.Office的Excel里的任何操作的 可以都可以用VBA编程记录下宏,然后把记录的宏,可以回放.当然也可以生成代码,比如给Excel设置单 ...
- [cnblog新闻]历史性时刻:云硬件支出首次高于传统硬件
https://news.cnblogs.com/n/617487/ 据调研公司 IDC 声称,2018 年第三季度云硬件支出占 IT 总收入的 50.9%. 知名调研公司 IDC 声称,面向云的 I ...
- Windows 下类似于 grep 查找字符串的命令 [转帖]
https://www.cnblogs.com/zxy1992/p/4372717.html findstr的命令参数及其意义如下所示 在文件中寻找字符串. FINDSTR [/B] [/E] [/L ...
- Angular $interval
<!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...
- ava 8中的新功能特性
正如我之前所写的,Java 8中的新功能特性改变了游戏规则.对Java开发者来说这是一个全新的世界,并且是时候去适应它了. 在这篇文章里,我们将会去了解传统循环的一些替代方案.在Java 8的新功能特 ...
- mysql 免安装版 启动服务马上关闭
在my.ini 加入这一句 1.直接在后面加上一下的参数 [mysqld] port=3306 basedir=D:\mysql-5.7.17-win32 datadir=D:\mysql-5.7.1 ...
- 【Gym 100733D】Little thief Shi(取数,DP)
题 Shi realized that he was almost out of money, even renting Shitalian lands. Shi was walking on a s ...
- 让一个继承unittest.TestCase的类下的setUp和tearDown只执行一次
知道unittest单元测试框架的朋友应该都知道, 执行继承了unittest.TestCase的类下每个test开头的方法(就是用例)时,都会执行setUp和tearDown,如下面的例子所示: i ...
- luogu2607/bzoj1040 [ZJOI2008]骑士 (基环树形dp)
N个点,每个点发出一条边,那么这个图的形状一定是一个基环树森林(如果有重边就会出现森林) 那我做f[0][x]和f[1][x]分别表示对于x子树,x这个点选还是不选所带来的最大价值 然后就变成了这好几 ...