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数据交互 ...
 
随机推荐
- pymysql 在数据库中插入空值
			
1. 先搞清 ''(空字符串)和 NULL的区别 (1)本质区别: 空字符串是个值 NULL 和Python中的NULL一样,是空值的意思 (2)查询语句的区别: SELECT * FROM test ...
 - python基础练习题30道
			
1.执行python脚本的两种方式 答:1>可以在python /home/xxxx.py 2>cd /home ./xxxx.py 因为py脚本里面指定了python解释器的位置 ...
 - C++面试集锦( 面试被问到的问题 )
			
1. C 和 C++ 区别 2. const 有什么用途 主要有三点: 1:定义只读变量,即常量 2:修饰函数的参数和函数的返回值 3: 修饰函数的定义体,这里的函数为类的成员函数,被cons ...
 - 小心错误使用EasyUI 让网站性能减半
			
先不谈需求,和系统架构,直接上来就被抛来了一个问题----基础性能太差了,一个网页打开要好几秒.我了个天,我听了也简直不敢相信,难道是数据量特别大?还是其中业务逻辑特别复杂? 简单的介绍下,基础系统是 ...
 - 挖洞姿势:特殊的上传技巧,绕过PHP图片转换实现远程代码执行(RCE)
			
我使用了一个特殊的图片上传技巧,绕过PHP GD库对图片的转换处理,最终成功实现了远程代码执行. 事情是这样的.当时我正在测试该网站上是否存在sql注入漏洞,不经意间我在网站个人页面发现了一个用于上传 ...
 - golang结构体
			
声明结构体 定义结构体使用struct关键字.在结构体内部定义它们的成员变量和类型.如果成员变量的类型相同还可以把它们写到同一行. struct里面可以包含多个字段(属性) struct类型可以定义方 ...
 - Html-Css 从入门到放弃(一)基础知识
			
注意要点: 1.ID属性不要以数字开头,数字开头的ID在 Mozilla/Firefox 浏览器中不起作用. 2.class 选择器用于描述一组元素的样式,class 选择器有别于id选择器,clas ...
 - Spring session(redis存储方式)监听导致创建大量redisMessageListenerContailner-X线程
			
待解决的问题 Spring session(redis存储方式)监听导致创建大量redisMessageListenerContailner-X线程 解决办法 为spring session添加spr ...
 - spring集成ActiveMQ居然要依赖这么多包
			
做spring和ActiveMQ的集成,作maven依赖的时候有感(以前都不在乎,现在不一样了........省略) <!-- https://mvnrepository.com/artifac ...
 - VS2015(Xamarin)开发安卓WebApp笔记
			
有关WebApp的开发,大多数人都用了第三方框架,如Cordova等.我这里没有用到这类框架,而是新建了一个WebView嵌入Assets(本地资源)来完成这个App,由于第一个练习App希望对初学者 ...