JavaScript 杂乱的小总结
- 基本类型只有String、number、boolean、null、undefined,还有一个Object。存在装箱类型,不过后台自动转换。
- 通过new创建对象时,如果没有参数,可以省略“()”。-- new也可以省略!!!变态啊
- 当访问对象中不存在的属性时,如obj.x,不会有任何影响;但是,如果这样赋值,那么会为原对象创建一个属性!!!
- 对于变量来说,除了全局作用域,就只有函数内部的作用域了。甚至for(var i = 0;..;..) 这里定义的i都是全局变量!!!
- 即便是在函数内部,使用var a=b=1;这样定义变量时,b默认是全局变量!!! -- 这里有个关键:默认没有定义就使用的变量为全局变量。
- ES6(还是5?),推出了use strict模式,没有定义的变量不能使用!该模式可以出现在文件的全局范围内(任何地方),也可以出现在方法内部!--当然,作用范围也不一样。
- 关于字符串转JSON,需要使用JSON.parse(str)。如果JSON转字符串,需要使用JSON.stringify(json)。
- 需要注意的是,如果JSON中有值为undefined的属性,那该属性不会出现在结果字符串中!还有,NaN会转成null;new Date() 会转成日期!
- 如果需要定制JSON转字符串的样式,添加一个toJSON属性即可,其值一般是方法。
例子:
// 序列化 JSON
var str = '{"name":"xiaoer", "age":18}'
var json = { name: "xiaoer", age: 18}
var json_str = JSON.stringify(json)
console.log('我是JSON转成的字符串:' + json_str)
var str_json = JSON.parse(str)
console.log('我是字符串解析成的JSON:' + str_json)
console.log('*************************************************')
json.birthday = new Date()
json.sex = undefined
json.pic = null
json.soul = NaN
console.log(str)
json_str = JSON.stringify(json)//忽略undefined!!!
console.log('我是JSON转成的字符串:' + json_str)
console.log('*************************************************')
var obj = {
x: 1,
y: 2,
o: {
o1: 1,
o2: 2,
toJSON: function () { // 自定义转JSON的格式
return this.o1 + this.o2
}
}
}
var obj_str = JSON.stringify(obj)
console.log(obj_str)
关于数组:
稀疏数组(就是含有未初始化的元素的数组,例如下面第4行会导致一个稀疏数组),未初始化的元素的角标实际上是不存在的。虽然遍历数组会返回undefined,但实际上角标是不存在的!这和你将【arr[i] = undefined】的操作是不同的。
另外,【arg in arr】,这里的arg对应的是已初始化的元素的角标!!!
var arr = []
console.log(arr.length) arr[10] = 111; // 这样做会导致稀疏数组,就是某些角标压根没有初始化。
console.log(arr.length)
for (var i = 0; i < arr.length - 1 ; i++) {
console.log('arr[' + i + '] = ' + arr[i])
} console.log('*****************')
arr[8] = undefined
var iter;
for(iter in arr){ // 这种for不会输出稀疏空缺值(不是undefined)!默认输出的是角标!
console.log('arr[' + iter + '] = ' + arr[iter])
} console.log('*****************')
console.log('(10 in arr)' + (10 in arr)) // arg in arr; 其结果是判断角标索引,而且仅判断非undefined的角标!!!
console.log('(9 in arr)' + (9 in arr))
arr[9] = undefined
console.log('(9 in arr)' + (9 in arr))
JavaScript 杂乱的小总结的更多相关文章
- ( 译、持续更新 ) JavaScript 上分小技巧(四)
后续如有内容,本篇将会照常更新并排满15个知识点,以下是其他几篇译文的地址: 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第二篇地址:( 译.持续更新 ) JavaScr ...
- ( 译、持续更新 ) JavaScript 上分小技巧(三)
最近家里杂事较多,自学时间实在少的可怜,所以都在空闲时间看看老外写的内容,学习之外顺便翻译分享~等学习的时间充足些再写写自己的一些学习内容和知识点分析(最近有在接触的:复习(C#,SQL).(学习)T ...
- ( 译、持续更新 ) JavaScript 上分小技巧(二)
考虑到文章过长,不便于阅读,这里分出第二篇,如有后续,每15个知识点分为一篇... 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第三篇地址:( 译.持续更新 ) Java ...
- ( 译、持续更新 ) JavaScript 上分小技巧(一)
感谢好友破狼提供的这篇好文章,也感谢写这些知识点的作者们和将他们整理到一起的作者.这是github上的一篇文章,在这里本兽也就只做翻译,由于本兽英语水平和编程能力都不咋地,如有不好的地方也请多理解体谅 ...
- JavaScript apply函数小案例
//回调函数1 function callback(a,b,c) { alert(a+b+c); } //回调函数2 function callback2(a,b) { alert(a+b); } / ...
- JavaScript里的小妖精
JavaScript里的小妖精———this!! 关于this指向这个问题,活生生折磨了我一个下午,回来静下心捋顺一下,总结出来一下规律. 当然,this这个复杂的问题不是一句两句可以说清楚,作为菜鸟 ...
- Javascript实现让小图片一直跟着鼠标移动
Javascript实现让小图片一直跟着鼠标移动实例 注意:图片可能加载不出来,注意更换 <!doctype html> <html> <head> <met ...
- JavaScript版拼图小游戏
慕课网上准备开个新的jQuery教程,花了3天空闲时间写了一个Javascript版的拼图小游戏,作为新教程配套的分析案例 拼图游戏网上有不少的实现案例了,但是此源码是我自己的实现,所以不做太多的比较 ...
- Javascript贪食蛇小游戏
试玩:http://hovertree.com/game/9/ 贪吃蛇是一种风靡全球的小游戏,就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的蛋,越吃越长.只要蛇头碰到屏幕四周,或者碰到自己的身子, ...
随机推荐
- C#方法参数--值参数,引用参数,输出参数
值参数: 使用值参数,通过复制实参的值到形参的方式,把数据传递到方法,方法被调用的时候,系统做如下操作: 在栈中为形参分配空间: 复制实参到形参. 注意:一个值参数的实参不一定是变量,它可以是任何能够 ...
- win7 64 安装scikit-learn
1. scikit-learn简单介绍 scikit-learn是一个基于NumPy.SciPy.Matplotlib的开源机器学习工具包.採用Python语言编写.主要涵盖分类. 回归和聚类等算法, ...
- [转]四种π型RC滤波电路
1.典型π型RC滤波电路 图7-27所示是典型的兀型RC滤波电路.电路中的Cl.C2是两只滤波电容,Rl是滤波电阻,Cl.Rl和C2构成一节π型RC滤波电路.由于这种滤波电路的形式如同字母π且采 ...
- Latex 转 word 技法大全
Latex 转 word 技法大全 在稿件接收后,经常会遇到出版社要求变更稿件格式,其中最多的是latex变为word格式.如果手工操作,是非常麻烦的,还容易出错.如果钱多得花不了,可以让出版社找人去 ...
- Shiro整合SSH开发3:配置Shiro认证后页面地址跳转问题(和详述不配置须要注意的问题)
在视频教程中讲请求认证成功后跳转页面的问题是一笔带过的,可是我认为有必要单独写一篇相应的文章进行叙述. 我用了SSH来整合Shiro,在开发后验证的过程中,每次登陆后Shiro都会 ...
- 批处理学习笔记11 - del命令和rd命令
这两个命令都是删除,所以放一块说了 del 删除文件 rd 删除目录(文件夹) ------------------------------------------------------------ ...
- BestCoder Round #4 Miaomiao's Geometry (暴力)
Problem Description There are N point on X-axis . Miaomiao would like to cover them ALL by using seg ...
- hdoj2111 Saving HDU
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- angularjs获取元素以及angular.element()用法
addClass()-为每个匹配的元素添加指定的样式类名 after()-在匹配元素集合中的每个元素后面插入参数所指定的内容,作为其兄弟节点 append()-在每个匹配元素里面的末尾处插入参数内容 ...
- SwitchOmega的详细配置——for Windows
必看 先下载Shadowsocks客户端进行相应配置,然后只要对SwitchOmega 进行新建情景模式后简单配置即可. 本文不谈如何安装SwitchOmega只谈如何配置SwitchOmega 不会 ...