js基本语法汇总
注意 转载须保留原文链接(http://www.cnblogs.com/wzhiq896/p/6783296.html ) 作者:wangwen896 整理
1、分类
ECMAScript js基本语法与标准
DOM Document Object Model文档对象模型
BOM Browser Object Model浏览器对象模型
tips:DOM和BOM都是一套API(Application programing interface)
2、注释方式
style /* */
body <!-- --!>
script //
/* */
/**
* js说明文档注释
*/
3、简单指令
alert(""); 提示框;
confirm(""); 确认框,点击后会响应返回true或false;
prompt(); 弹出一个输入框;
document.write("");
console.log(""); 在控制台打印相应的信息;
console.dir(""); 在控制台打印出该对象的所有信息;
4、变量命名
数字(0-9)、字母(a-z,A-Z)、下划线(_);
tips:应避免保留字和关键字;
5、NaN和isNaN
isNaN(number),如果number不是数字,则为true;
Number(number),在转换为数字类型时,若number不是数字,则返回NaN;
6、转义字符
\
\r 回车
\n 空格
\t 缩进
\\ 反斜杠
7、逻辑短路、逻辑中断
true || 6; 逻辑或短路,左边为ture返回右值;
6 && true; 逻辑与短路,左边false返回右值;
8、优先级
* / %
+ -
&&
||
?
tips:自上而下优先级越来越高
9、类型转换(type)
parseInt("12a3"); 转为数字,尝试强转;
parseFloat("123.123");
data.toString();
String(data);
tips:变量声明未赋值,其值为undefined;
对象为空,其值为null;
10、三元表达式
eg : a>b?a=1:a=2;
格式:
判断条件?true的时候执行的操作:false的时候执行的操作;
11、数组Array
(1)、定义法
构造函数:
var arr = new Array("123","abc","xxx");
字面量:
var arr = ["123","646","abc"];
数组长度:
var arr = new Array(6);(数组长度为6);
(2)、赋值
arr[0]=1;
12、形参和实参
定义函数时,function funcA(a,b,c){},其中的a、b、c即为形参;
调用函数时,funcA(1,2,3);其中的1、2、3即为实参;
tips:function里面有一个arguments对象,里面存有所有传进函数的实参;
13、函数function
(1)、函数命名
1、 可以使用字符、数字、下划线、$;
2、 不能以数字开头;
3、 不能使用关键字和保留字;
4、 区分大小写;
5、 建议要有意义 -- 动词+名字结构;
6、 驼峰命名法;
7、 函数名不能重名,后面写的重名函数会把前面写的函数给覆盖掉;
(2)、函数的返回值
返回值:
当函数执行完毕之后,所得到的结果就是一个函数返回值
任意函数都有返回值
1、 在函数内部没有显示的写有return的时候,函数的返回值是undefined;
2、 当函数内部有return,但是return后面没有跟着任何内容或者数据的时候,
函数的返回值是undefined,并且return后面的代码不会执行;
3、 当return后面跟着内容或者数据的时候,函数的返回值就是这个跟着的内容或者数据;
(3)、函数的四种形式:
1、没有参数,没有return;
通常在于封装一段过程;
2、没有参数,有return;
通常用于内部封装引用其他函数(闭包,回调);
3、有参数,没有return;
通常用于执行操作的封装;
4、有参数,有return;
常见形式;
(4)、匿名函数
匿名函数的name属性值为anonymous;
函数仅用一次的情况,即用即废;
eg:
setTimeout(function(){
console.log(this.name);
},1000);
tips:在1秒后在控制台打印出本函数的名称;
(5)、回调函数
在一个函数当中,另一个函数作为参数传入该函数中,另一个的这个函数即为回调函数;
eg:
function atack(callback){
return callback;
}
tips:在调用该函数时,指定callback是哪个函数;
atack(func);
(6)、短路运算
作用:防止传入函数的数据不足,造成无法运行;
eg:
function getResult(a,b,fn) {
fn && fn();
}(通常使用逻辑与的短路来决定是否执行回调函数;)
function getResult_2(a,b){
a || 0;
}(通常用逻辑或的短路来防止实参不足的情况,强行赋值;)
(7)、自执行函数
(function func2(){
})()
tips:在函数定义的结束最后写入一个(),该函数定义完成后直接被调用执行;
(8)、递归
在函数执行的最后再一次的调用自身;
tips:递归是一种非常耗资源的做法,通常为了简化运算,还会结合缓存进行;
并且注意,递归必须要有结束判断条件(if),否则该函数被调用后就是死循环;
14、数据类型
(1)、简单数据类型
string、number、boolean
(2)、复杂数据类型
String、Number、Boolean、Array、Math、Date、Obeject、function、RegExp(正则表达式)
(3)、空数据类型
* Null ---→Null的数据类型会返回一个Object
* undifined
tips:用typeof可以进行判断数据类型;
tips:定义的简单数据类型变量,其数据保存在变量中;
而复杂数据类型,其变量保存的是数据所在的内存地址;
15、内置对象
Array、Date、Math、String;
16、(Math)数学对象
向上取整 Math.ceil(number);
向下取整 Math.floor(number);
四舍五入 Math.round(number);
求多个数字之间的最大值 Math.max();
求多个数字之间的最小值 Math.min();
求x的y次幂 Math.pow(x,y);
求正弦值 Math.sin(x);
example:
求一个角度的正弦值,要求x必须是一个额弧度值
角度和弧度的转换公式:
弧度 = 角度 * 2 * Math.PI / 360;
Math.sin(30*2*Math.PI/360)
Math.abs(x); 得到一个数字的绝对值
17、(Array)数组对象
(1)、arr1.concat(arr2);
数组拼接,结果为将arr2拼接到arr1的最后;
(2)、arr.join();
数组字符串输出,括号内可以指定元素连接的符号;
eg:
arr=["a","b","c","d"];
console.log(arr.join("|")); (结果为"a|b|c|d")
(3)、arr.pop();
切除数组的最后一个元素,返回值为该元素;
(4)、arr.slice(start,end)
获取,获取数组的指定片段,start必须有,如果参数为负数则从末尾开始选取;
返回值为该片段组成的,一个新的数组;
(5)、arr.push
添加,用于向数组的末尾添加新的元素,参数可以是多个;
返回值为数组的新长度;
(6)、arr.splice
1、用于向数组中指定的索引添加元素;
arr.splice(2, 0, "William","asdfasdf");
在第2个元素开始,删除的元素个数(可以为0,为0到结尾),
加入元素为"William"、"asdfasdf";
2、用于替换数组中的元素;
arr.splice(2,1,"William");
3、用于删除数组中的元素;
arr.splice(2,2);
(7)、arr.indexOf(element);
查找,在数组中查找element,返回值为索引,如果没有该元素返回-1;
(8)、arr.sort(function);
排序,function为一个函数;
eg:
function sortNumber(a,b){
return a-b;
}
arr.sort(sortNumber);(从小到大排序)
tips:如果a-b改成b-a,那么执行的操作为从大到小;
tips:字符串对象(String)的方法与Array的方法类似;
18、(Date)日期对象
date.getTime()
date.getMilliseconds()
date.getSeconds()
date.getMinutes()
date.getHours()
date.getDay()
date.getDate()
date.getMonth()
date.getFullYear()
tips:很多,查文档
19、(String)对象
charAt(index)
str[index] 获取字符串指定位置的字符
concat() 拼接字符串
---------------------------
slice(start,end)/
substring(start,end) 截取从start开始,end结束的字符,
返回一个新的字符串,若start为负数,那么从最后一个字符开始;
substr(start,length) 截取从start开始,length长度的字符,得到一个新的的字符串
---------------------------
indexOf(char) 获取指定字符第一次在字符串中的位置
lastIndexOf(char) 获取指定字符最后一次出现在字符串中的位置
trim() 去除字符串前后的空白
---------------------------
toUpperCase()
toLocaleUpperCase() 转换为大写
toLowerCase()
toLocaleLowerCawse() 转换为小写
---------------------------
replace() 替换字符
split() 分割字符串为数组
20、自定义对象
对象:无序属性的集合;
特征:属性(key);
行为:方法(value);
js是基于对象的弱类型语言;
继承:基于类,子类可以从父类得到的特征;
工厂模式:定义一个function构造函数,作为对象,要创建对象直接调用该构造函数,加new关键字;
构造函数:定义对象的函数,里面存有该对象拥有的基本属性和方法;
命名首字母大写,this会自动指代当前对象;
访问对象属性:
obj[key];
obj.key;
遍历对象:
for(key in obj){
key 为属性名;
obj[key] 为属性值(value);
}
21、JSON
{
"name" : "李狗蛋",
"age" : 18,
"color" : "yellow"
}
1、 所有的属性名,必须使用双引号包起来;
2、 字面量侧重的描述对象,JSON侧重于数据传输;
3、 JSON不支持undefined;
4、 JSON不是对象,从服务器发来的json一般是字符串,
通过JSON.parse(jsonDate.json)可以将其转换成js对象;
22、JS解析
(1)、作用域
全局作用域:整个代码所有地方都可以调用;
局部作用域:在函数内部声明的变量,只可以在函数内部使用;
(2)、变量提升和函数提升
预解析:在解析的时候,var和function都会被提升到代码的最顶端;
但是赋值操作不会被提升,定义和函数才会被提升;
if里面的变量定义也会被提升,但是赋值操作不会;
23、其他细节(tips)
(1)、元素由对象组成的数组进行排序
eg:
var data = [
{title: "老司机", count: 20},
{title: "诗人", count: 5},
{title: "歌手", count: 10},
{title: "隔壁老王", count: 30},
{title: "水手", count: 7},
{title: "葫芦娃", count: 6},
];
//该数组的元素都为对象。我们需求为根据count的值给数组重新排序。
//解决方案:使用sort方法,对传入的函数做手脚。
function sortArr(a,b){
return a.count > b.count;
}
data.sort(sortArr);
//原本的a和b的比较方法变成a.count和b.count;
//原本的比较方法可以参见17,数组对象
//至此,data将以count值从小到大排列。
tips:Array对象的sort方法传入的为比较函数,比较函数里return排序比较的方法;
原始的sort方法传入的函数内部return的值为a>b,
通过修改sort传入的函数,可以实现对元素为对象的数组的排序!
js基本语法汇总的更多相关文章
- Go语言语法汇总(转)
Go语言语法汇总 分类: 技术2013-09-16 14:21 3007人阅读 评论(0) 收藏 举报 go语言golang并发语法 目录(?)[+] 最近看了看GoLang,把Go语言的语法 ...
- 数据可视化的优秀入门书籍有哪些,D3.js 学习资源汇总
习·D3.js 学习资源汇总 除了D3.js自身以外,许多可视化工具包都是基于D3开发的,所以对D3的学习就显得很重要了,当然如果已经有了Javascript的经验,学起来也会不费力些. Github ...
- ExtJs4 笔记(2) ExtJs对js基本语法扩展支持
本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载.类的封装等. 一.动态引用加载 ExtJs有庞大的类型库,很多类可能在当前的页面根本不会用到,我们可以引入动态加载的概念来即用即取.这 ...
- JS高级语法与JS选择器
元素(element)和节点(node) childNode属性和children属性的区别 <!DOCTYPE html> <html lang="en"> ...
- ExtJs对js基本语法扩展支持
ExtJs对js基本语法扩展支持 本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载.类的封装等. 一.动态引用加载 ExtJs有庞大的类型库,很多类可能在当前的页面根本不会用到,我们可 ...
- Vue.js 数据绑定语法详解
Vue.js 数据绑定语法详解 一.总结 一句话总结:Vue.js 的模板是基于 DOM 实现的.这意味着所有的 Vue.js 模板都是可解析的有效的 HTML,且通过一些特殊的特性做了增强.Vue ...
- JavaScript进阶 - 第2章 你要懂的规则(JS基础语法)
第2章 你要懂的规则(JS基础语法) 2-1什么是变量 什么是变量? 从字面上看,变量是可变的量:从编程角度讲,变量是用于存储某种/某些数值的存储器.我们可以把变量看做一个盒子,盒子用来存放物品,物品 ...
- [转载]ExtJs4 笔记(2) ExtJs对js基本语法扩展支持
作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/) 本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载.类的封装等. 一.动态引 ...
- Vue.js 模板语法
本章节将详细介绍 Vue.js 模板语法,如果对 HTML +Css +JavaScript 有一定的了解,学习起来将信手拈来. Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 ...
随机推荐
- 通讯录--(适配iOS7/8/9)
导入库#import <AddressBook/AddressBook.h> #import <AddressBookUI/AddressBookUI.h> #pragma m ...
- Spring Boot启动过程(四):Spring Boot内嵌Tomcat启动
之前在Spring Boot启动过程(二)提到过createEmbeddedServletContainer创建了内嵌的Servlet容器,我用的是默认的Tomcat. private void cr ...
- Node软件的安装
1.官网网址:https://nodejs.org/en/ 左边被推荐,右边最新 下载完成一键下一步直接安装,当然,如果你想修改安装目录的话当然没问题,注意:不要有英文目录 2.Window+r打开命 ...
- iOS最好用的弹出框
重构项目时发现有的时候需要弹出提示,比如登录成功,数据请求失败,还有选择相机或者相册来上传头像等等. 今天就自己写了一个弹出框,采用的是系统的UIAlertController,只不过自己有定义了一些 ...
- 【NFS项目实战二】NFS共享数据的时时同步推送备份
[NFS项目实战二]NFS共享数据的时时同步推送备份 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品, ...
- Markdown轻量级标记语言
1. Markdown是什么? Markdown是一种轻量级标记语言,它以纯文本形式(易读.易写.易更改)编写文档,并最终以HTML格式发布.Markdown也可以理解为将以MARKDOWN语言编写的 ...
- 2017java预备作业2
1 安装git • 到Git官网https://www.git-scm.com/ 下载Git客户端 • 安装时选择默认即可. • 安装完成后在桌面的快捷菜单中选择Git Bash Here 或者在开始 ...
- C++ 头文件系列(string)----分析string初始化内存模型
测大小 这里我们比较4种版本的basic_string模版类,分别是:string, wstring, u16string, u32string. 虽然他们是不同的字符串类型,但是其sizeof的结果 ...
- MYSQL数据库-约束
约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性. MYSQL中,常用的几种约束: 约束类型: 主键 默认值 唯一 外键 非空 关键字: PRIMARY KEY DEF ...
- iwebshop两表联查
$tb_goods = new IQuery('goods as g'); $tb_goods->join='left join miao as m on m.goods_id=g.id'; $ ...