位置: 编程技术 - 正文

javascript中eval解析JSON字符串(javascript中的eval函数)

编辑:rootadmin

推荐整理分享javascript中eval解析JSON字符串(javascript中的eval函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js中eval方法,js中eval是什么意思,js eval解析json,js eval解析json,javascript的eval,js evaluate,js中eval函数是干嘛的,js中eval函数是干嘛的,内容如对您有帮助,希望把文章链接给更多的朋友!

我们都知道,高级浏览器可以用 JSON.parse() API 将一个 JSON 字符串解析成 JSON 数据,稍微欠妥点的做法,我们可以用 eval() 函数。

是否注意到,向 eval() 传参时,str 变量外裹了一层小括号?为什么要这样做?

我们先来看看 eval 函数的定义以及使用。

eval() 的参数是一个字符串。如果字符串表示了一个表达式,eval() 会对表达式求值。如果参数表示了一个或多个 JavaScript 声明, 那么 eval() 会执行声明。不要调用 eval() 来为算数表达式求值; JavaScript 会自动为算数表达式求值。

简单地说,eval 函数的参数是一个字符串,如果把字符串 “noString” 化处理,那么得到的将是正常的可以运行的 JavaScript 语句。

怎么说?举个栗子,如下代码:

执行后弹出 “hello world”。我们把 str 变量 “noString” 化,粗暴点的做法就是去掉外面的引号,内部调整(转义等),然后就变成了:

very good!这是正常的可以运行的 JavaScript 语句!运行之!

javascript中eval解析JSON字符串(javascript中的eval函数)

再回到开始的问题,为什么 JSON 字符串要裹上小括号。如果不加,是这个样子的:

恩,报错了。为什么会报错?试试把 str “noString” 化,执行一下:

毫无疑问,一个 JSON 对象或者说是一个对象根本就不是能执行的 JavaScript 语句!等等,试试以下代码:

这又是什么鬼?但是给 name 加上 “” 又报错?

好吧,快晕了,其实还是可以将 str “nostring” 化,看看是不是能正确执行的 JavaScript 语句。前者的结果是:

这确实是一条合法的 JavaScript 语句。{} 我们不仅能在 if、for 语句等场景使用,甚至可以在任何时候,因为 ES6 之前 JavaScript 只有块级作用域,所以对于作用域什么的并不会有什么冲突。去掉 {} 后 name: "hanzichi"也是合法的语句,一个 label 语句,label 语句在跳出嵌套的循环中非常好用,具体可以参考 label,而作为 label 语句的标记,name 是不能带引号的,标记能放在 JavaScript 代码的任何位置,用不到也没关系。

一旦一个对象有了两个 key,比如 {name: "hanzichi", age: } ,ok,两个 label 语句?将 “hanzhichi” 以及 分别看做是语句,但是 语句之间只能用封号连接!(表达式之间才能用逗号)。所以改成下面这样也是没有问题的:

越扯越远,文章开头代码的错误的原因是找到了,为什么套个括号就能解决呢?简单来说,() 会把语句转换成表达式,称为语句表达式。括号里的代码都会被转换为表达式求值并且返回,对象字面量必须作为表达式而存在。

本文并不会大谈表达式,值得记住的一点是,表达式永远有一个返回值。大部分表达式会包裹在() 内,小括号内不能为空,如果有多个表达式,用逗号隔开,也就是所谓的逗号表达式,会返回最后一个的值。

javascript的 {} 语句块详解 今日学习解析json字符串,用到了一个eval()方法,解析字符串的时候为什么需要加上括号呢?摸不着头脑。原来javascript中{}语句块具有二义性,不加括号

Javascript技术栈中的四种依赖注入小结 作为面向对象编程中实现控制反转(InversionofControl,下文称IoC)最常见的技术手段之一,依赖注入(DependencyInjection,下文称DI)可谓在OOP编程中大行其

javascript正则表达式总结 工具Regexpal是一个在线Javascript正则表达式处理器,地址是:

标签: javascript中的eval函数

本文链接地址:https://www.jiuchutong.com/biancheng/369978.html 转载请保留说明!

上一篇:Javascript中Date类型和Math类型详解(js date类型)

下一篇:javascript的 {} 语句块详解(javascript的语法在哪一项中规定)

  • 报废汽车残值收入
  • 个税汇算清缴可以修改收入吗
  • 车船税的免征对象是什么
  • 实收资本印花税是营业账簿吗
  • 金税盘数据怎么备份
  • 售卖会卡,达标返现,怎么进行账务处理
  • 超市小票能否入库
  • 企业注销处置固定资产需要缴纳哪样税
  • 网络文化传媒公司名字
  • 发票只有抵扣联没有发票联能不能报销
  • 厨房酒店用品
  • 企业促销应该采用什么方法
  • 购买的固定资产没有使用,是否计提折旧
  • 企业食堂买东西怎么入账
  • 为别人开发票先收的税金怎么入帐?
  • 办公室的取暖费怎么做会计分录
  • 企业停产或停业期间的费用包括
  • 营业收入包括其收入吗
  • 研发部门属于哪个会计科目
  • 企业可根据实际情况随意设置会计科目
  • 可以对开发票吗
  • 烟草生产者消费税计算方法
  • 营改增后房产税计税依据及计算方式
  • 资产负债表应交税费计算公式
  • 行政单位以前年度会计错账调整
  • 冲销暂估入库的会计分录
  • 预提成本的会计处理
  • 电脑怎么一键返回到桌面
  • 怎么让资产负债率下降
  • 期间费用率的意义
  • 税率抵扣计算公式
  • 银行哪些进项税不用抵扣
  • 商场收取租金要缴纳哪些税
  • 失控发票受票方的责任
  • 罚款计入营业外支出影响当期损益
  • php编程基础与案例开发
  • thinkphp5执行流程
  • 坏账准备属于哪一类账户
  • 项目折现率计算公式
  • 物业公司代收水费账务处理
  • 结算备付金管理办法(2019年修订版)
  • 报销还款人民币是什么意思
  • 增值税进项税如何申报
  • 资产负债表净资产为负数
  • 购买方销项负数发票怎么抵扣
  • 待抵扣进项税额什么意思
  • 通过法院拍卖取得的房屋需要法院下确认裁定吗
  • 报销连号发票的合理解释
  • 法定盈余公积的主要用途
  • 质保金 销售费用
  • 印花税的征税对象和计税依据
  • 保函分为几种
  • 固定资产清理主动
  • 一般纳税人第一次逾期申报处罚吗
  • 房地产购买流程
  • 企业未开票收入怎么入账
  • 实际费用以什么为准
  • 退客户多余货款怎么处理
  • 公司库存现金提现流程
  • 一般纳税人企业所得税多久申报一次
  • 未开票收入如何记账
  • 其他权益工具是所有者权益类科目吗
  • 场地租赁费属于什么税收分类编码
  • 电脑买了四个月折旧多少
  • 工程款打入个人账户扣税吗
  • mysql数据存在内存还是硬盘
  • 注册表已被管理员禁用怎么处理
  • Mac系统怎么设置ftp
  • centos更新命令
  • windows2008
  • 微软商店更新错误
  • unix中创建新文件
  • shell脚本实现ssh登录
  • .css
  • linux链接ln
  • 大连税务局王局长
  • 交通费用包括
  • 贵阳税务官网登录
  • 地址变更去税务局办理
  • 农产品电子发票可以抵扣吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设