了解JSON

本文详细探讨了JSON作为数据格式的特性和应用,包括其与JavaScript的关系,支持的数据类型,以及在互联网数据传输中的优势。同时,介绍了如何通过JSON.stringify和JSON.parse进行数据转换和过滤,以及函数表达式和变量声明的特性。

JSON

JSON是一种数据格式,不是一种编程语言,而且是JavaScript的语法的子集。
支持两种数据类型:
第一种、js中的基本类型(除了undefined外)
第二种、数组和对象(不支持函数)

注意: JSON对象的属性必须加双引号,其次,没有末尾的分号,因为这不是JavaScript语句,所以不需要分号。

了解JSON之所以流行于互联网中传输结构化数据的原因
1.JSON拥有与JavaScript类似的语法
2.可以将JSON数据结构解析为有用的JavaScript对象。

stringify和parse都有可选参数
第一个参数是需要过滤的对象,第二个参数是函数(key,value),
stringify有第三个参数,表示缩进的格式,max-length是10,超过则取10

学完该章节获得了

  1. 更深层次了解到JSON是作为一个数据格式的存在,而不是一个工具
  2. 了解到如果要剔除过滤对象的某个属性可以通过JSON的API第二个参数进行剔除,只要把返回值设置为undefined即可
  3. 了解到JSON支持的两种数据类型,以及不支持的数据类型(明白之前后台为什么传不了undefined的值的原因)
  4. 明白互联网上使用JSON的原因(由于JSON可以直接转化为JavaScript对象使用,对比xml省去了获取节点的操作。)

函数表达式

定义函数的方式有两种:函数声明、函数表达式。前者有函数提升、后者没有,如果后者的变量是用
var 声明。则会存在变量提升的情况。

问题一、在严格模式下,如果要使用递归,但是又不能使用arguments.callee,你有什么解决办法?
答:可以使用函数表达式(Fn FnName),这样就可以在内部使用FnName,兼容标准模式和严格模式。在严格模式下,对未经
声明的变量进行赋值会导致错误。

问题二、函数调用时都发生了什么
答:首先会创建一个包含全局对象的作用域链,然后当调用函数时会复制全局对象的作用域链来构建起执行环境的作用域链。
对于一个函数的执行环境而言,其作用域链中包含两个变量对象,本地活动对象和全局变量对象。

问题三、关于this对象,你了解多少
答:总所周知,this对象是基于运行时基于函数的执行环境绑定的。所以说,谁调用即指向谁。在严格模式中,
this指向undefined;obj.getFn()和(obj.getFn)()的this指向都一样。但是如果是(obj.getFn = obj.getFn)(),this
得不到维持,便会指向window或者undefined。

问题四、var声明的有趣性
答:var不具备产生块级作用域的功能,所以,多次声明同一个变量JavaScript不回报错,只会忽略后面的声明。换作是
let则报错。因为let具备产生块级作用域的功能。在函数内部如果变量不经过声明,则会被挂到全局对象

问题五、为什么不建议在Vue实例里面绑定过多的prototype属性?
答:1.性能问题,影响查找速度。2.命名冲突导致全局污染,造成改动引发

问题六、函数的返回值是函数1,函数1可以访问函数的变量?
答:可以,因为JavaScript是定义时生效的语言,不是运行时生效的语言

对象转字面量
有些特殊的运算符并不会把对象转换成数字或者字符串,而是转换成字面量。

对象转字面量的具体步骤和对象转数字的具体步骤一样,先调用valueOf再调用toString,区别是,对象转字面量并不会在返回之前把结果转换成字符串或者数字,也就是说没有上面步骤中的粗体部分。

那么什么运算符会这么SB呢:

+!=<,>以及所有关系运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值