js学习、备忘
字符串使用单引号’abc’。(双引号也行。推荐;html→双引号,js→单引号)
===严格等于、!==严格不等于
if(x) 当x为undefined、null和0的时候都为false;需注意当x为0的情况容易忽略, 当x未声明的时候会报错 必须要用typeof(x)!='undefined'
定义变量不使用var即表示该变量是全局变量 他归属于Window对象,在<script></script>之间直接定义的变量也属于全局变量,一个页面中多个<script></script>中的全局变量可以互相访问(归属于window),全局的变量在页面关闭或者浏览器关闭的时候才被释放掉,js也有垃圾回收机制会定时执行垃圾回收当一个变量不需要使用的时候赋值为null就会被回收掉。
js变量重复定义后面定义的变量会覆盖前面定义的变量。
js变量没有块级作用域:即是在函数中定义的变量没有层级关系,只用在函数中定义的在整个函数内都有效的而且遵循重复定义会覆盖。如:输出的都是3.。。。function test() {var i = 1;if (1) { var i = 2; if (2) { var i = 3; alert(i);} alert(i);} alert(i);}
js中switch判断时,是“全等于”,===
js函数中没有写return的返回值都是undefined。
js函数可以动态的传入参数,通过argument.length获得传入的参数个数,arguments[index]获得参数值.函数不存在方法重载
js同名方法会覆盖,不存在重载所以参数不同方法名相同的函数仍然会覆盖.
js的类型转换:
parseInt(arg) 将字符串转换为整形转换失败返回NaN
parseFloat(arg) 将字符串转换为浮点数换失败返回NaN
Number(value) 将给定的value(可以是任何类型)转换为数值换失败返回NaN TRUE转换为1,false转换为0
String(value) 将给定的value转为字符串和tostring() 一样 但当value为null和undefined时value.tostring()会报错,String(value)则直接返回null或undefined。
Boolen(value) 将给定的value转为boolen类型值,undefined、null、0、''空字符串的boolen值都为false
关于函数:
1、functions test(a,b){return a+b;} js函数不需要生命函数的返回值和参数的类型,如果方法体有return则返回指定值,如果没有写明return该方法都将返回undefined
2、funciton没有重载,但可以动态的传递参数,在函数中可以通过arguments.length获得参数个数和arguments[index]获取参数值。
3、同名函数会覆盖之前的函数。
4、匿名函数:a、var fuc1=function(a,b){return a+b;}调用fuc1(2,2); b、直接什么并调用 (function(a,b){return a+b;})(2,2)
c、var fuc2=new function('a','b','return a+b'); 调用fuc2(2,2);
关于js模拟面向对象:
1、方法就是一个对象:function person(){} var p=new person(); p.name='动态添加属性'; alert(p.name);/alert(p['name'];
2、闭包 简单的理解就是在函数(“外部函数”)中又定义了函数(“内部函数”),并且可以在“外部函数”之外,使用“内部函数”。function test(y) {return function (x) { return x * 2; } (y);} 调用:alert(test(5));
3、js对象可以采用this(动态的添加属性),function person(name,age){this.Name=name;this.Age=age;} var p=new person('tom',18); alert(p.Name);/alert(p['Name'];
4、对象中还可以定义方法,可看作c#中类中定义方法。
5、也可以直接 var obj=new Object(); obj.name='动态添加类属性'; obj.fuc=function(){}; 创建类/对象。
6、可以可以 var boj={}; obj.name='动态添加类属性'; obj.fuc=function(){}; 创建。
String对象相关的方法:
length属性:获取字符串的字符个数。(无论中文字符还是英文字符都算1个字符。)
charAt(index)方法:获取指定索引位置的字符。(索引从0开始)
indexOf(‘字符串’,startIndex)方法:获取指定字符串第一次出现的位置。startIndex表示从第几个开始搜索。
split(‘分隔符’,limit);//根据分隔符将一个字符串返回为一个数组。limit表示要返回的数组的最大长度(可自定义)。多个分隔符使用正则表达式:var msg = 'a★b★c☆d☆e#f';var vals = msg.split(/☆|★|#/);alert(vals);
substr(startIndex,len)//从startIndex开始,截取len个字符。
substring(startIndex,stopIndex)//从startIndex开始,截取到stopIndex位置(不包括stopIndex所在的字符)。
toUpperCase()//转换大写、toLowerCase();//转换小写
match()、replace()、search()方法,正则表达式相关
正则的定义:var reg=new RegExp("\\w+");/var reg=new RegExp('\\w+','g');/var reg=/\w+/g; g:全部匹配,i:不区分大小写匹配。
关于Array:
1、var arr=new Array(); arr[0]='为数组赋值'; arr[1]=123; 遍历用for(var i=0;i<arr.length;i++){alert(arr[i]} or for(var item in arr){alert(’item为key‘);}
2、var arr=['为数组赋值',123]; 遍历用for(var i=0;i<arr.length;i++){alert(arr[i]} or for(var item in arr){alert(’item为key‘);}
3、var arr=new Array('为数组赋值',123); 遍历用for(var i=0;i<arr.length;i++){alert(arr[i]} or for(var item in arr){alert(’item为key‘);}
4、Array可以当dictionary使用 : var arr=new Array(); arr['人']='REN'; alert(arr.人); 遍历用for(var i=0;i<arr.length;i++){alert(arr[i]} or for(var item in arr){alert(’item为key‘);}
5、dictionary的简写:var arr = {“人”:”ren”,“口”:”kou”} 这种简写的length为0只能用forin来遍历通过key来访问到值。 遍历用for(var item in arr){alert(’item为key‘);}
6、arr.join('连接符'); 用连接符连接数组的各个值。不添加连接符默认逗号隔开。
7、arr.reverse(); 数组反转,发回的结果为[123,'为数组赋值']
8、arr.sort();排序,默认从小到大排序。可以传入一个方法规定排序方式 arr.sort(function(a,b){return b-a;} 倒叙排列
扩展方法:
通过类对象的prototype设置扩展方法,下面为String对象增加quote(两边加字符)方法
String.prototype.quote = function(quotestr) {if (!quotestr) {quotestr = "\"";}return quotestr + this + quotestr;};
扩展方法的声明要在使用扩展方法之前执行。JS的函数没有专门的函数默认值的语法,但是可以不给参数传值,不传值的参数值就是undefined,自己做判断来给默认值。
js学习、备忘的更多相关文章
- Android学习备忘笺01Activity
01.设置视图 在Android Studio新建的项目中,通过 setContentView(R.layout.activity_main);方法将res/layout/activity_main. ...
- leaflet 学习备忘
leaflet 开源js地图工具.非常好用. leaflet参考:http://leafletjs.com/ 特性: 完全开源,可以基于不同的第三方瓦片生成地图. 基于原始GPS,无需转换 可创建离线 ...
- UML学习备忘
两大类UML图: 行为图(behavior diagrams)和结构图(structure diagrams) 行为图将引导系统分析员分析且理清"系统该做些什么"?系统分析 ...
- Git学习备忘
本文参考廖雪峰写的精彩的git学习文档,大家可以直接去官网看原版,我这里只是便于自己记录梳理 原版地址:http://www.liaoxuefeng.com/wiki/0013739516305929 ...
- MVC4 学习备忘
WebConfig文件里添加数据库链接字符: <add name="MovieDBContext(可以自己取字符串名字)" connectionString="Da ...
- 一滴一点vim(学习+备忘)
普通模式: h j k l 分别是左下上右方式移动: :w 保存修改 :q 推出 :wq 保存修改并退出 :q! 放弃修改强制推出 x 删除光标所在位置字符 i 在光标所以位置插入字符 删除类命令: ...
- JavaScript学习备忘
1.您只能在 HTML 输出流中使用 document.write 如果在文档已加载后使用它(比如在函数中),会覆盖整个文档 2.数组 : [40, 100, 1, 5, 25, 10] <== ...
- JS判断备忘
快速引入jquery并显示重点内容 (function(d,j,s,t){t=d.body.appendChild(d.createElement("script"));t.onl ...
- js菜鸟备忘
1.图片切换 function changeImage() { var img = document.getElementById("myImg"); ")) img.s ...
- vue2.0 mintUI 学习备忘
一 技术栈:vuecli+vuejs2+mintUI+axios vuecli :脚手架工具 vuejs:前端框架 mintUI:基于vuejs移动端UI axios:vuejs ajax数据交互 ...
随机推荐
- 【POJ2248】加法链 idfs
首先,在这道题的搜索框架中,在对每一位进行枚举时,复杂度为\(O(n^2)\),但是可知最优解序列的长度不会太长. 其次,采用 \(bool\) 类型返回值时,是一种存在性搜索,并不一定能够得到最优解 ...
- spread与react
我们写react组件的过程中会遇到这个 我们知道react中的{},浏览器会知道说是以js的形式进行解析出来.那么怎么解析...props呢? 这个就涉及到es6中的扩展运算符了,我们先看下面的一些运 ...
- 爬虫acm比赛成绩(多页成绩整合在一起、获取复制不了的数据)(hihocoder、计蒜客)
https://github.com/congmingyige/web-crawler_rank-of-competition-in-JiSuanKe-and-hihocoder 1. 计蒜客(获取复 ...
- MATLAB:图像的与、或、非、异或逻辑运算(&、|、~、xor)
图像的与.或.非.异或逻辑运算涉及到了&.|.~和xor符号 close all;%关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clc; clear all; I=imrea ...
- Spring Boot Actuator的端点
Spring Boot Actuator的关键特性是在应用程序里提供众多Web端点,通过它们了解应用程序 运行时的内部状况.有了Actuator,你可以知道Bean在Spring应用程序上下文里是如何 ...
- banner轮播无缝滚动 jq代码
HTML: <div class="box"> <ul> <li>11111</li> <li>22222</li ...
- python post提交
# coding:utf8 import requests def login(): url = 'http://back.xiyilang.cc/staff/login.json' headers= ...
- CM记录-选择合适的硬件
hadoop的运行环境---hadoop/jvm/os/hw 原则1:主节点的可靠性要好于从节点:NameNode(Yarn-ResourceManager).DataNode(NodeManager ...
- C#多线程和异步(一)——基本概念和使用方法
一.多线程相关的基本概念 进程(Process):是系统中的一个基本概念. 一个正在运行的应用程序在操作系统中被视为一个进程,包含着一个运行程序所需要的资源,进程可以包括一个或多个线程 .进程之间是相 ...
- RocketMQ之消息幂等
幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同. 首先我们了解一下什么是 ...