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 ...
随机推荐
- What Is Apache Hadoop
What Is Apache Hadoop? The Apache™ Hadoop® project develops open-source software for reliable, scala ...
- Mybatis复杂嵌套关联一例
Mybatis three entity relation:association in collection PatentMapper.xml <resultMap id="Bas ...
- 一个简单的修改 iis默认页面的方法..
1. IIS 默认打开的是欢迎页面 2. 然后找到了一个比较简单的修改默认界面的方法: 找到这个文件的默认路径 C:\inetpub\wwwroot 然后修改 iisstart.htm 文件 在hea ...
- Window安装Redis并设置为开机启动
一.下载windows版本的Redis 去官网找了很久,发现原来在官网上可以下载的windows版本的,现在官网以及没有下载地址,只能在github上下载,官网只提供linux版本的下载 官网下载地址 ...
- 操作系统+编程语言的分类+执行python程序的两种方式+变量
1.什么是操作系统? 操作系统就是一个协调\管理\控制计算机硬件资源与软件资源的一个控制程序. 2.为何要操作系统? a.把复杂的硬件操作封装成简单的功能\接口用来给用户或者程序来使用(文件) b.把 ...
- Golang的位运算操作符的使用
& 位运算 AND | 位运算 OR ^ 位运算 XOR &^ 位清空 (AND NOT) << 左移 >> 右移 感觉位运算操作符虽然在平时用得并不多,但是在 ...
- HashMap, HashTable,HashSet,TreeMap 的时间复杂度
hashSet,hashtable,hashMap 都是基于散列函数, 时间复杂度 O(1) 但是如果太差的话是O(n) TreeSet==>O(log(n))==> 基于树的搜索,只需要 ...
- day27 多继承 super 详细用法
# 没有使用super的时候的多继承,如果父类的名字变了.或者有什么更改,需要全部都一起改 class FooParent: def bar(self, message): print(message ...
- java监控工具VisualVM
java监控工具VisualVM https://visualvm.github.io/ https://visualvm.github.io/documentation.html https://h ...
- Python基础之控制流
介绍一些Python的基本的东西,你会发现,Python真的很简单.我也尽可能说得简单一些,因为我理解的也很简单. 在到目前为止我们所见到的程序中,总是有一系列的语句,Python忠实地按照它们的顺序 ...