Eavl整理
一. 严格模式
eval方法只能在非严格模式中进行使用,在use strict中是不允许使用这个方法的。
二. 用法
- eval函数会接收一个参数obj,如果obj不是一个字符串,那么eval会直接返回obj。
- 如果obj是一个字符串,也分两种情况:第一种情况是字符串内部是一个js表达式,且运行结果为一个具体的数值,那么该结果就会返回这个数值,否则就会返回undifined;如果内部只是一个单纯的字符串,那么就会返回这个字符串。
- 需要注意的点是,js声明对象的方法并不能够返回一个具体的数值,必须用括号包起来才可以返回数值,具体如下图:

图2.1
三. 局部作用域
eval直接在函数内部使用则返回的是局部变量,如下图:

图3.1
上图中eval直接在函数内部执行,即使在eval内部定义了一个全局变量a,但是它直接返回了局部变量,所以内部函数并没有执行。
使在函数内部使用的eval成为全局变量的解决方法:
(1) 利用window.eval()使其成为全局的变量,如下图:

图3.2
这种情况就是把该变量变为全局变量,这样在执行完函数以后就可以得到这个a变量的值。
(2) 定义eval为全局的,如下图:

图3.3
如上代码就会把b变量也变为全局变量,这样就可以在执行完该函数以后获取到b变量。
四. 总结
综上所述,eval相当于是在非严格模式下,定义了一种将JSON字符串转换为对象的形式,其功能和JSON.parse()是相似的。但是区别在于:
当为通过JSON.parse()转换为对象后的JSON再调用该函数继续进行转换时,就会报错。eval()方法不会如此,当传入字符串是对象时,继续使用上述的方式,它会返回原对象。
Eavl整理的更多相关文章
- dotNET跨平台相关文档整理
一直在从事C#开发的相关技术工作,从C# 1.0一路用到现在的C# 6.0, 通常情况下被局限于Windows平台,Mono项目把我们C#程序带到了Windows之外的平台,在工作之余花了很多时间在M ...
- UWP学习目录整理
UWP学习目录整理 0x00 可以忽略的废话 10月6号靠着半听半猜和文字直播的补充看完了微软的秋季新品发布会,信仰充值成功,对UWP的开发十分感兴趣,打算后面找时间学习一下.谁想到学习的欲望越来越强 ...
- SQL Server 常用内置函数(built-in)持续整理
本文用于收集在运维中经常使用的系统内置函数,持续整理中 一,常用Metadata函数 1,查看数据库的ID和Name db_id(‘DB Name’),db_name('DB ID') 2,查看对象的 ...
- kafka学习笔记:知识点整理
一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...
- JAVA程序员常用软件整理下载
********为了大家学习方便,特意整理软件下载如下:*************Java类软件:-------------------------------JDK7.0:http://pan.ba ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- GJM : C#设计模式汇总整理——导航 【原创】
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- 整理下.net分布式系统架构的思路
最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...
- 安卓GreenDao框架一些进阶用法整理
大致分为以下几个方面: 一些查询指令整理 使用SQL语句进行特殊查询 检测表字段是否存在 数据库升级 数据库表字段赋初始值 一.查询指令整理 1.链式执行的指令 return mDaoSession. ...
随机推荐
- spring事务-说说Propagation及其实现原理
前言 spring目前已是java开发的一个事实标准,这得益于它的便利.功能齐全.容易上手等特性.在开发过程当中,操作DB是非常常见的操作,而涉及到db,就会涉及到事务.事务在平时的开发过程当中,就算 ...
- python3 之 格式化json
import json json_string = None with open("json_file.json") as f: json_string = f.read() tr ...
- phpstorm下载和破解
http://idea.qinxi1992.cn/ 官网下载对应版本,在下面进行破解! storm官网:https://www.jetbrains.com/phpstorm/ 破解网址 :http: ...
- MyBatis 批量插入数据对插入记录数的限制
<基于 MyBatis 框架的批量数据插入的性能问题的探讨>(作者:魏静敏 刘欢杰 来源:<计算机光盘软件与应用> 2013 年第 19 期)中提到批量插入的记录数不能超过10 ...
- NAND FLASH 驱动分析
NAND FLASH是一个存储芯片 那么: 这样的操作很合理"读地址A的数据,把数据B写到地址A" 问1. 原理图上NAND FLASH和S3C2440之间只有数据线, ...
- ruby 异常处理
begin raise 'A test exception.' rescue Exception => e puts e.message puts e.backtrace.inspect end
- Winsock 示例
#include "stdafx.h" #include <Windows.h> #include <iostream> #pragma comment(l ...
- composer update的错误使用以及如何更新composer.lock文件
用composer update装包是错误的. 安装包标准的方法应该是 require ,或者手动写 compose.json 文件,然后 composer install .如果只是需要更新 com ...
- leetcode458
原本没有思路,参考了网上的解题思路,自己独立完成了代码. int poorPigs(int buckets, int minutesToDie, int minutesToTest) { ; ; wh ...
- C语言学习笔记--函数
1. C 语言中的函数 (1)函数的由来: 程序 = 数据 + 算法→C 程序 = 数据 + 函数 (2)模块化程序设计 (3)C 语言中的模块 2. 面向过程的程序设计 (1)面向过程是一种以过程为 ...