JSON 对象
a.JSON与js 对象的区别
下边是JSON 对象和js对象
var person={ age:10, name:'sa' };
{ "age":10, "name":"sa" }
两种对象对比,首先JSON没有声明变量,第二JSON对象没有不需要结尾分号,
JSON对象属性必须要加上双引号,手工编写JSON时候忘了给对象属性名加双引号或者把双引号写成单引号成了最常见的错误
b.JSON对象序列花
早起JSON解析器基本使用js 的eval函数,由于JSON是javascript语法子集,所以eval可以进行解析并且返回js对象和数组, ECMAScript5 对解析JSON进行了规范,定义了全局对象JSON,目前ie8+ ff3.5+ sf4+ chrome 都可以支持,对于旧版本的浏览器可以使用shim ,使用eval 对JSON求值存在风险,可能会执行一些恶意代码,
JSON对象有两个方面 stringify() parse() 一个是序列化成字符串,一个是把字符串解析为原生js的值。
var person={ age:10, name:"lei.you" }
var str=JSON.stringify(person); 这样就会得到一个字符串“{“age”:10,"name":"lei.you"}”
然后在使用var p= JSON.parse(str); 得到对应的对象值,
注意p 和person不是用一个对象虽然具有同样的属性,如果个parse解析的字符串不是一个有效的JSON 该方法会抛出错误
序列化选项 在stringify 中第二个参数是一个数组,该数组是对序列化的对象属性进行过滤
例如 JSON.stringify(person,[age]) 那么返回的序列化以后的字符串就只剩下age 属性
变量提升
请看如下代码
var id=2000; function test(){ if(false){ var id=1000; } console.log(id) } test();
打印出的结果竟然是1000,是不是程序出问题还是自己眼睛花了,
为什么会出现这样的结果,研究完js的执行环境和作用域的问题,就会对这个现象有所理解
js的作用域是函数作用域,与传统强类型语言c++ java 都是不同,传统的编程语言是块作用域,
所以根据js执行环境的原理,当执行环境进入到一个函数时候,函数的环境就会被推入一个环境栈中,而在环境执行之后才会把这个执行环境弹出,当进入这个执行环境的时候首先会创建一个作用域链,作用域链的用途是保证对执行环境有权访问的所有变量和函数的有序访问,作用域链的前端永远都是当前执行的代码所在环境的变量对象,如果这个环境是函数,则将其活动对象作为变量对象。
在javascript,变量有4种基本方式进入作用域:
- 1 语言内置:所有的作用域里都有this和arguments;(译者注:经过测试arguments在全局作用域是不可见的
- 2 形式参数:函数的形式参数会作为函数体作用域的一部分;
- 3 函数声明:像这种形式:function foo(){};
- 4 变量声明:像这样:var foo;
函数声明和变量声明总是会被解释器悄悄地被“提升”到方法体的最顶部。这个意思是,像下面的代码:
变量 作用域 和内存问题
相关推荐
"JavaScript高级编程"这本书深入探讨了这门语言的高级特性和最佳实践,旨在帮助开发者提升技能水平,实现更高效、更可靠的代码编写。以下是该书可能涵盖的一些关键知识点: 1. **基础语法**:包括变量、数据类型...
Node.js是一种主流框架,它允许你使用JavaScript快速构建具有高度可伸缩性的...《Node.js高级编程》还涵盖了从使用定时器制定函数执行计划到创建和控制外部进程等内容,可以让你为运行、构建和测试自定义模块做好准备。
很详细透彻的 javascript 网上收集 的 但是不知道是那本书 知道的告诉我下 我去买本 入门与提高 javascript教程 入门与提高 javascript教程入门与提高 javascript教程
"JavaScript高级编程"这本教材深入探讨了这一语言的高级特性和实践技巧,旨在帮助开发者提升技能,掌握JavaScript的精髓。 该书可能涵盖以下几个重要的知识点: 1. **基础语法**:JavaScript的基础包括变量、数据...
"JavaScript高级编程"这个主题深入探讨了这门语言的高级概念和技术,旨在帮助开发者从初级水平迅速提升到高级水平,实现快速学习和易学易懂的目标。 首先,我们要理解JavaScript的基本语法和数据类型,包括变量、...
JavaScript是一种广泛使用的脚本语言,...JavaScript高级编程是一本全面介绍JavaScript语言的书,尤其适合初学者,通过这本书的学习,可以为Web开发打下坚实的基础,理解并运用JavaScript来增强网页的交互性和功能性。
学习JavaScript高级编程技术,首先需要理解脚本语言的概念。脚本语言是相对于编译型语言而言的,它们通常不需要预编译,而是直接由解释器执行。JavaScript就是这样的脚本语言,它在网页加载时被解释执行,可以实时...
"JavaScript高级编程"这本书深入浅出地介绍了这一语言的各个方面,旨在帮助初学者和有经验的开发者进一步提升技能。以下是对该书内容的详细概述: 1. **基础语法**:JavaScript的基础始于变量、数据类型(包括原始...
JavaScript是一种广泛使用的客户端脚本编程语言,主要用于开发Web应用程序。它能够让开发人员快速创建交互式的网页,并将各种强大的Web对象(如HTML、XML、Javaapplet、flash等)有机结合起来,从而便捷地生成可在...
根据提供的标题、描述、标签及部分内容,我们可以推测这本书——《JavaScript高级编程(第2版)》第二部分的主要内容涉及到了JavaScript的高级应用和技术细节。尽管给出的部分内容并未包含实际的文字内容,但从书名...
javascript高级编程的JavaScript开始讲起,直到当前它对XML和Web服务的具体支持,内容主要涉及JavaScript的语言特点、JavaScript与浏览器的交互、更高级的JavaScript技巧,以及与在Web应用程序中部署JavaScript解决...
《Professional Node.js 高级编程》是一本由Pedro Teixeira编著的专业技术书籍,主要探讨了Node.js这一强大的JavaScript后端开发平台。这本书详细介绍了如何利用Node.js进行高效、高性能的应用程序开发,旨在帮助...
《Node.js高级编程》这本书是Node.js开发者的宝贵资源,它深入探讨了这个流行的JavaScript运行环境的高级概念和实践技巧。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,允许开发者使用JavaScript进行服务器...
JavaScript高级编程是面向C#程序员的一种技术,旨在简化代码并实现更高效的效果。JavaScript作为一种功能强大的脚本语言,它的灵活性允许开发者在对象创建后动态定义其属性,这在早期的JavaScript开发中尤其常见。...
javascript高级编程的 幻灯片文件
"javascript高级编程v3"这个主题,显然聚焦于深入理解JavaScript的核心概念、高级特性以及最新版本的更新内容。JavaScript高级编程通常涉及以下几个关键知识点: 1. **基础语法**:包括变量声明(var, let, const)...
这份“js高级编程资料”显然是一份深入学习JavaScript的资源集合,可能包含了公司的内部培训实例,旨在帮助开发者提升其在JavaScript领域的专业技能。下面,我们将详细探讨JavaScript的一些核心知识点。 1. **基础...
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个...