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#趣味程序---车牌号推断
甲说前两位同样,乙说后两位同样,丙说四位的车牌号刚好是一个数的平方.这个车牌号是多少? using System; namespace ConsoleApplication1 { class Prog ...
- gradle平级项目引用
一.准备1. 新建一个gradle项目cc-core2. 新建一个gradle项目cc-util 二.场景项目cc-core引用项目cc-util 三.配置1. 项目cc-util被引用的项目什么都不 ...
- tp查询范围
一.查询范围 //说明username和password是对应模型下的 scopeUsername($query) 和scopePassword($query)方法 //关键字scope 在控制器如 ...
- mysql 返回多列的方式
SELECT * FROM (SELECT 'success' as _result) a,(SELECT @gid as gid) b;
- 计算机通信协议之OSI参考模型
OSI参考模型 在OSI参考模型之前人类对计算机结构的研究就已经进行了太多的讨论,最终通过了作为通信协议设计指标的OSI参考模型.这个协议将通信协议中必要的功能分成了七个部分.通过这些分层使得那些比较 ...
- Linux内存管理Swap和Buffer Cache机制
Linux内存管理Swap和Buffer Cache机制 一个完整的Linux系统主要有存储管理,内存管理,文件系统和进程管理等几方面组成,贴出一些以前学习过的一个很好的文章.与大家共享!以下主要说明 ...
- maven将镜像站点改为中国开源镜像点
在Apache官网上下载bin文件,解压到相应目录.然后配置/etc/profile即可,环境变量名为M2_HOME,如下:(配置完后注意source /etc/profile)#Mavenexpor ...
- 【转】SQL SERVER 获取存储过程返回值
1.OUPUT参数返回值 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_buyerid int , @o_id bigint OUTPUT ) AS BEG ...
- Oracle PLSQL Demo - 13.游标的各种属性[Found NotFound ISOpen RowCount CURSOR]
declare r_emp scott.emp%rowtype; cursor cur_emp is select t.* from scott.emp t; begin open cur_emp; ...
- Oracle PLSQL Demo - 10.For Loop遍历游标[FOR LOOP CURSOR]
declare cursor cur_emp is select t.* from scott.emp t; begin for r_emp in cur_emp loop dbms_output.p ...