我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

jquery的eval,jquery?

jquery eval是干什么的

简单来说就是执行js语句,只不过这里的js语句是一个字符串,一个可以任意拼接的字符串,但前提是这个字符串是可执行的,例如:

成都创新互联主营余姚网站建设的网络公司,主营网站建设方案,App定制开发,余姚h5成都小程序开发搭建,余姚网站营销推广欢迎余姚等地区企业咨询

function(){

var data;

eval("data="+"12");

//相当于"data=12",这里是为了说明"12"这个值可以是另一个变量,

//而这个变量的值的来历则是你定的。

alert(data);

}

当上面这个函数执行的时候,页面会弹出12的字样,这说明,写在eval中的字符串被当做一个赋值语句执行了。

jquery如何让页面刷新的时候默认执行一次点击事件?

如果需要在页面刷新的时候默认执行一次点击事件,可以参考下面的方法实现:

1、使用原生js实现

使用原生js主要用到了window.onload方法:

onload 事件会在页面或图像加载完成后立即发生。

语法:onload="SomeJavaScriptCode"

参数SomeJavaScriptCode是必须的规定该事件发生时执行的 JavaScript。

实现代码:

script

window.onload = function() {

requestFullScreen();//直接执行onclick中的函数就行

}

/script

将代码放到body标签最下面即可。

2、使用Jquery实现

使用jquery实现该效果主要用到了jquery.ready(fn)和jquery.trigger()方法:

jquery.ready(fn):当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。

jquery.trigger(type,[data]):在每一个匹配的元素上触发某类事件。

实现代码:

$(function() {

$("#sdsd").trigger("click");//触发button的click事件

});

javascript中eval的用法

JavaScript eval() 函数

JavaScript 全局对象

定义和用法:

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

语法:

eval(string)

返回值:

通过计算 string 得到的值(如果有的话)。

说明:

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。

抛出:

如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。

如果非法调用 eval(),则抛出 EvalError 异常。

如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。

扩展资料:

调用eval函数的三种情况:

1、直接调用

直接调用时,eval函数相关的执行环境属性ThisBinding,LexicalEnvironment,VariableEnvironment的值如下:

a) ThisBinding是调用eval函数时,调用方执行环境的ThisBinding

b) LexicalEnvironment是调用eval函数时,调用方执行环境的LexicalEnvironment

c) VariableEnvironemnt是调用eval函数时,调用方执行环境的VariableEnvironment

2、间接调用

所谓间接调用,即将eval赋值给另一个变量后在调用

3、严格模式下的eval

在严格模式下,eval的LexicalEnvironment,VariableEnvironment指向属于eval自己的Lexcial Environment,而不是调用方的Lexical Environment,但是ThisBinding还是调用方的ThisBinding。

同时,在严格模式下如果eval直接调用,那么eval的Lexical Environment的outer指针指向调用方的Lexical Environment,否则,如果是间接调用,那么eval的Lexical Environment的outer指针指向全局环境的Lexical Environment。

参考资料来源:百度百科--eval()

js中eval和$parseJSON的区别和联系以及JSON.stringify

js中eval()和$.parseJSON()的区别以及JSON.stringify()

1.第一个区别是:安全性

json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢?

JSON.parse()之可以解析json格式的数据,并且会对要解析的字符串进行格式检查,如果格式不正确则不进行解析,而eval()则可以解析任何字符串,eval是不安全的

如:

[javascript] view plain copy

var str = 'alert(1000.toString())';

eval(str);

JSON.parse(str);

用eval可以解析,并且会弹出对话框,而用JSON.parse()则解析不了。 其实alert并没有什么坏处,可怕的是如果用恶意用户在json字符串中注入了向页面插入木马链接的脚本,用eval也是可以操作的,而用JSON.parse()则不必担心这个问题。

注意:某些低级的浏览器尚不支持JSON.parse()

《高性能JavaScript》一书即指出:警告:关于JSON和eval需要注意的是:在代码中使用eval是很危险的,特别是用它执行第三方的JSON数据(其中可能包含恶意代码)时,尽可能使用JSON.parse()方法解析字符串本身。该方法可以捕捉JSON中的语法错误,并允许你传入一个函数,用来过滤或转换解析结果。如果此方法以备Firfox 3.5 、IE8 及 Safari 4 原生支持。大多数javascript类库包含的JSON解析代码会直接调用原生版本,如果没有原生支持的话,会调用一个略微不那么强大的非原生版本来处理。

2.第二个区别:JSON.parse()解析的必须是json格式的字符串要不报错,而eval()则没有这么严格

在这里“json格式的字符串”是指要求指定的字符串必须符合严格的JSON格式,例如:属性名称必须加双引号、字符串值也必须用双引号。

如果传入一个格式不"完好"的JSON字符串将抛出一个JS异常

json的解析方法共有两种:eval 和 JSON.parse(),如:

[javascript] view plain copy

var jsonStr= '{"name":"lulu", "sex":"female"}';

var evalJson=eval('('+jsonStr+')');

var jsonParseJson=JSON.parse(jsonStr);

这样就把json格式的字符串jsonStr转换成了JSON对象。

但是区别是:

[javascript] view plain copy

var age = 27;

var jsonStr= '{"name":"lulu", "sex":"female","age":++age}';

var evalJson=eval('('+jsonStr+')'); //不报错此时age的值是28

var jsonParseJson=JSON.parse(jsonStr);//报错

从上面eval()函数的用法我们可以看出eval()函数在解析json格式的字符串时要加上圆括号如eval('('+jsonStr+')'),这是因为:

eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。

JSON.stringify()

JSON.stringify()是把json数据转化成json格式的字符串如:

[javascript] view plain copy

var jsonObj = {"name":"lulu","sex":"female"};

var jsonStr = JSON.stringify(jsonObj);

结果是:

'{"name":"lulu", "sex":"female"}'

jquery语言,用eval函数处理过的数据,var dataObj=eval("("+data+")");用firebug老是显示这个错误

贴出来你的data内容,很可能就是你的json格式有问题。。。

要保证data是字符串,如果已经是json数组了,你干嘛还要eval。。


网站栏目:jquery的eval,jquery?
分享URL:http://mswzjz.cn/article/dsgjiih.html

其他资讯