JavaScript
- 概念
- 一种具有面向对象能力的、解释型的程序设计语言
- 基于对象和事件驱动并具有相对安全性的客户端脚本语言
- 主要目的是,验证发往服务器端的数据、增加 Web 互劢、加强用户体验度等
- 组成
- ECMAscript:语法标准
- DOM:文档对象模型,描述了处理网页内容的方法和接口
- BOM:浏览器对象模型,描述了与浏览器进行交互的方法和接口
基本语法
- 注释
- 单行注释:用//起头
- 多行注释:放在/* 和 */之间
- 兼容 html 注释方式“<“!– –”>”
- 标识符
- 命名基本和javaz一致
- 变量
- 声明:var
- 变量只声明不赋值,其值为undefined
- 声明时不加var,创建全局变量
- 不能重新声明一个已存在的变量,但是如果在重新声明时就赋值,是允许的,会覆盖前面的值
- 弱语言,变量没有类型,可以赋予各种类型的值
- 在script标签中定义的变量,属于全局变量
- 数据类型
- 有五种简单的数据类型:Undefined、Null、布尔、数值和字符串
- 数 值(Number): 整数和小数(比如 1 和 3.14)
- Infinity、-Infinity超过了表数范围,出现 Infinity(正无穷)或者-Infinity(负无穷)
- isFinite()函数可以确定是否超出范围
- NaN表示非数值(Not a Number),是一个特殊的值
- NaN 不等于任何值,包括它本身,因为它不是一个值,NaN 与任何数(包括它自己)的运算,得到的都是 NaN
- isNaN 方法可以用来判断一个值是否为 NaN
- parseInt()、parseFloat()、Number()转化为数值
- 字符串(String): 字符组成的文本(比如”Hello World”)
- 布尔值(Boolean):true(真)和 false(假)两个特定值
- Undefined:表示“未定义”或不存在,即此处目前没有任何值
- 表示一个没有内容的值,转为数值时为NaN
- 声明变量而没有赋值,会出现Undefined
- 调用带参的方法,却没有传参数,参数会默认为Undefined
- 函数没有返回值,那返回值默认为Undefined
- 而如果用没有声明的值,就会报错
- Null:表示空缺,即此处应该有一个值,但目前为空
- 表示空值,表示一个空对象引用,转化为数字时为0
- typeof操作返回Object
- 与Undefined相等
- 数 值(Number): 整数和小数(比如 1 和 3.14)
- 一种复杂数据类型:Object
- 对象(object) : 各种值组成的集合
- 对象(object)
- 数组(array)
- 函数(function)
- 有五种简单的数据类型:Undefined、Null、布尔、数值和字符串
- typeof 操作符
- 用来检测数据类型
- typeof null 返回的是 object 字符串
- typeof 函数返回function字符串
比较运算
- ==和!=
- 只比较值是否相等
- ===和!==
- 会比较类型+值
区块
- js的区块,即大括号,不构成单独作用域
- 区块内外变量是同一个作用域
遍历数组
三种方法
- 普通
- for(var i=0; i<=数组.length-1; i++){}
- 下标
- for(var 下标(名称任意) in 数组名){ 数组名[下标]是获取元素}
- 元素
- 数组名.forEach(function(element,index){})
函数
- 概述
- 功能代码快,函数也是对象
- 声明
- function 函数名([参数列表]){}
- var 变量名 = function ([参数列表]) {}
- 函数的参数只写变量名即可,名称任意,即不用写var
- js 中的函数没有重载,同名的函数,会被后面的函数覆盖
- 允许有不定数目的参数
- 参数
- 实参可以省略,其值默认为undefined
- 若函数形参同名(一般不会这么干):在使用时以最后一个值为准
- arguments 对象: 获取所有的参数
- 由于 JavaScript 允许函数有不定数目的参数,所以我们需要一种机制,可以在函数体内部读取所有参数。这就是 arguments 对象的由来。
- arguments 对象中存放了调用该函数时传递的参数值。
- 只有函数被调用时,arguments 对象才会创建,未调用时其值为 null
- 函数名.name:函数名
- 函数名.length:形参个数
- 函数名.toString(): 返回源码
- 作用域
- 注意局部变量和全局变量
- 同名时,就进原则
- 函数调用
- 函数名([实参])
- 函数的地位
- 可以赋值给一个变量
- 可以作为参数和返回值
字符串常用函数
- charAt(idx):返回指定位置处的字符
- indexOf(Chr):返回指定子字符串的位置,从左到右。找不到返回-1
- substr(m,n):返回给定字符串中从 m 位置开始,取 n 个字符,如果参数 n 省略,则意味着取到字符串末尾
- substring(m,n):返回给定字符串中从 m 位置开始,到 n 位置结束,如果参数 n 省略,则意味着取到字符串末尾
- toLowerCase():将字符串中的字符全部转化成小写
- toUpperCase():将字符串中的字符全部转化成大写
- length: 属性,不是方法,返回字符串的长度
数学函数
- Math.random():随机数
- Math.ceil():向上取整
- Math.floor():向下取整
日期函数
- getFullYear()年,setYear()
- getMonth()月,setMonth():特别注意,java系语言中,月份从0开始,与显示的月份差1,计算时要注意
- getDate()日
- getHours()时
- getMinutes()分
- getSeconds()秒
- toLoacaleString():可根据本地时间把 Date 对象转换为字符串
编码与解码
- 编码
- encodeURI() –>编码参数
- encodeURIComponent()–>编码所有
- 解码
- decodeURI()
- decodeURIComponent()
对象
- 概念
- 一种无序的数据集合,由若干个 “ 键值对 ”(key-value)构成
- 创建对象
- var 对象名 = {}
- var 对象名 = {键:值,键 2:值 2,…}
- var 对象名 = new Object()
- var 对象名 = Object.create(null)
- 特点
- 对象中以 键:值 对形式存放数据,多个键值对用逗号隔开,但是最后没有逗号
- 对象的所有键名都是字符串,所以加不加引号都可以
- 对象中可以存放任意类型的数据,如:方法、对象、数组、布尔等
- 对象中的属性可以随意添加
- 操作属性可以使用点(.)、中括号([]),使用[]操作属性,属性名要放在引号中,如:obj[“name”]
- 一个对象有多个引用时,其中一个对其发生变化,另外也可见
this关键字
- 概述
- 代表函数运行时,自动生成的一个内部对象,只能在函数内部使用
- 那就是 this 指的是,调用函数的那个对象
- 在函数中使用 this
- 属于全局性调用,代表全局对象 Global,通过 window 对象来访问
- 在对象的方法中使用 this
- 对象中的函数使用 this,代表当前的上级对象