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/ 贪吃蛇是一种风靡全球的小游戏,就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的蛋,越吃越长.只要蛇头碰到屏幕四周,或者碰到自己的身子, ...
随机推荐
- this 与 super 反复问题?
我们都知道 this 和 super keyword,在 调用 构函数的时候, 都必须写在第一行中. this 调用的是当前的类的构造函数. super 调用的是父类的构造函数! this和supe ...
- Python isalpha() 方法
描述 Python isalpha() 方法检测字符串是否只由字母或汉字组成. 语法 isalpha() 方法语法: S.isalpha() 参数 无. 返回值 如果字符串至少有一个字符并且所有字符都 ...
- python 中 with 用法
前言 with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源, 比如文件使用后自动关闭/线程中锁的自动获取和释放等. 问题引出 如下代码: fil ...
- python dataframe 在merge时 产生笛卡尔积
在pandas中,concat, merge, join的使用方法可以参考以下资料: http://blog.csdn.net/stevenkwong/article/details/52528616 ...
- 独立成分分析(Independent component analysis, ICA)
作者:桂. 时间:2017-05-22 12:12:43 链接:http://www.cnblogs.com/xingshansi/p/6884273.html 前言 今天群里冒出这样一个问题:群里谁 ...
- xdebug 安装及使用规则
参考:http://blog.csdn.net/21aspnet/article/details/7047191 http://www.nowamagic.net/librarys/veda/deta ...
- 使用jQuery的ajax同步请求吃过的亏
jQuery是一个非经常常使用的js库.甚至我们开发不论什么一个项目都首先把jquery导入进行.jQuery太过强大,使用起来非常方便.可是在使用的过程中也遇到过非常多坑.我在这里分享一下.避免大家 ...
- 算法导论--装备线调度(升序&&降序输出)
题意就先不用讲了吧,感觉自己还没有掌握核心的东西. //心得 //如何保持路径,递归的实现 #include<iostream> #include<cstdio> #inclu ...
- C++ 智能指针 shared_ptr
今天晚上去旁听了C++高级编程的课,其中提到智能指针.第一反映还以为是auto_ptr呢,一听才知道是share_ptr这个.哦,原来是C++11特性.大致的原因是auto_ptr有一点缺陷,而sha ...
- Ubuntu 12.04下jdk的安装与配置
由于要开始在linux下学习jsp的开发,所以就准备自己动手配置一下jdk和tomcat jdk 下载地址: http://www.oracle.com/technetwork/java/javase ...