`
zha_zi
  • 浏览: 586196 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

js 高级编程

 
阅读更多

 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高级编程 pdf

    JavaScript高级编程 pdfJavaScript高级编程 pdfJavaScript高级编程 pdfJavaScript高级编程 pdf

    Node.js高级编程.pdf

    Node.js是一种主流框架,它允许你使用JavaScript快速构建具有高度可伸缩性的...《Node.js高级编程》还涵盖了从使用定时器制定函数执行计划到创建和控制外部进程等内容,可以让你为运行、构建和测试自定义模块做好准备。

    JavaScript 高级编程

    很详细透彻的 javascript 网上收集 的 但是不知道是那本书 知道的告诉我下 我去买本 入门与提高 javascript教程 入门与提高 javascript教程入门与提高 javascript教程

    javascript高级编程.pdf

    javascript高级编程,包括语言概述,语言基础,事件处理,对象编程,文档对象模型,windows对象,document对象

    JavaScript 高级编程(成书).pdf

    JavaScript 高级编程(成书).pdf JavaScript 高级编程(成书).pdf

    JS高级编程设计.pdf

    JS高级编程设计.pdf 好资源 大家分享

    javascript高级编程

    javascript高级编程 快速学习 易学易懂

    javaScript高级编程

    Javascript 高级编程主要JavaScript的基本语法,Document对象,文本对象,按钮对象,选择和隐藏对象,Location对象,history对象等等的属性和方法,最后讲述了Javascript的服务器编程;比较适合初学者;

    javascript高级编程(第2版)pdf.part2

    javascript 高级编程 (第2版)pdf.part2

    javascript高级编程JavaScript.pdf

    高级编程

    javascript高级编程PPT.zip

    javascript高级编程的JavaScript开始讲起,直到当前它对XML和Web服务的具体支持,内容主要涉及JavaScript的语言特点、JavaScript与浏览器的交互、更高级的JavaScript技巧,以及与在Web应用程序中部署JavaScript解决...

    [Node.js] Node.js 高级编程 (英文版)

    [Wrox] Node.js 高级编程 (英文版) [Wrox] Professional Node.js Building Javascript Based Scalable Software (E-Book) ☆ 出版信息:☆ [作者信息] Pedro Teixeira [出版机构] Wrox [出版日期] 2012年10月23...

    Node.js高级编程 PDF电子书下载 带书签目录 完整版.rar

    Node.js高级编程 PDF电子书下载 带书签目录 完整版

    JavaScript 高级编程(成书)

    收集自网络,关于JavaScript编程的好教材,内容清晰完整。

    JavaScript高级编程.ppt

    javascript高级编程的 幻灯片文件

    JavaScript_高级编程

    JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个...

    javascript高级编程ppt详细

    javascript高级编程ppt详细资料

    javascript高级编程学习手册

    目录: 第一章 javascript语言概述 第二章 JavaScript语言基础 第三章 JavaScript事件处理 第四章 JavaScript基于对象编程 第六章 string,math,array等数据对象 第七章 window及相关顶级对象 第八章 document对象

    javascript高级编程技术

    一、了解脚本的概念,掌握:JavaScrip语言基本语法、... 二、了解JavaScrip的各种数据类型,掌握各种运算符,表达式的运算。使用控制选择结构编写简单的程序。 三、了解各种对象的的概念,掌握各种对象的属性和方法。

Global site tag (gtag.js) - Google Analytics