企业在什么网站推广,html手机网页制作,杭州网站建设V芯ee8888e,相机网站建设规划书theme: channing-cyan
1.不要使用eval#xff01;
如果你从来都没有用到过eval这个函数#xff0c;甚至你都不知道这个函数的作用。那么我只能说#xff1a;你做了一件正确的事情 o.O
虽然我这篇文章要说一下eval函数的一些能力和注意点#xff0c;但是我希望#xff0…
theme: channing-cyan
1.不要使用eval
如果你从来都没有用到过eval这个函数甚至你都不知道这个函数的作用。那么我只能说你做了一件正确的事情 o.O
虽然我这篇文章要说一下eval函数的一些能力和注意点但是我希望如果读者看完了这篇文章。在以后的学习和工作上如果遇到了某个问题可千万别想到这篇文章或者eval这个方法。
为什么呢因为在Javascript初期这门语言还不完善所以会用到eval这个方法去解决一些问题。但是Javascript发展到今天这个程度我们已经不需要使用eval这个方法了。如果你想用这个方法那么一定有其他更好的方式等着你。
而且eval这个方法是有安全和性能问题的所以千万不要使用当然如果不怕被同事喷的话也可以。
2.eval函数的使用
首先这个方法的入参是很简单的就一个字符串。
当这个字符串为表达式的时候,eval函数就返回这个表达式的值。 当这个字符串是语句的时候eval函数就执行这些语句。
简单吧看下面的例子
var a 2;
eval(a 2);
console.log(a); // 4let x eval(1 1);
console.log(x); // 1这个时候有想法的人就会寻思了这个eval函数里好像还能访问变量啊。那他访问的变量是局部的呢还是全局的呢
咱们来试一下就知道了
var x global
function f() {var x local;eval(x change);return x;
}
console.log(f(), x); //localchange global执行完我们发现奥原来是这样eval访问的属性是局部变量。
我们能这么轻易的下结论吗不能我们来个花活看下面代码
var y global;
var geval eval;
function g() {var y local;geval(y changed);return y
}
console.log(g(), y); //local globalchangedwc?你会发现当我们把eval这个方法赋值给其他变量后再通过这个变量去调用他访问的就是全局属性了。
但是捏在JS中如果你处在严格模式下这个eval函数就被管控了他就只能访问或者更改局部的属性全局的属性他是改不了滴。
3.eval定义变量
在eval中我们能否定义一个变量呢试一下
eval(var a 1);
console.log(a); //1哎没毛病那定义变量的话会不会有全局和局部的问题呢我们按照刚才的方法也试一下呗
var a 2, b 2
function fn(){eval(var a 1);geval(var b 1);console.log(a); //1console.log(b); //1
}
fn()
console.log(a); //2
console.log(b); //1哦莫莫,所以通过geval定义的变量也是全局变量。太吓人了
当然要注意一点在严格模式下我们不能通过eval定义变量。只能访问变量或者修改变量。
最后希望这篇文章对你有所帮助并且千万不要使用eval。