关于js语法有关问题,大神请进
关于js语法问题,大神请进!
1. rerurn(new Function("return"+date))();求详细解释代码为什么这么写,还能怎么写。
2. var a =
{
"aaa":a,
"bbb":b,
"ccc":c
}
此处的a和b都是变量,而c却为函数,为什么c可以是函数,而不是写成这个格式"ccc"=c()
3.有时候function a()
{
function b()
}
方法里面有方法,这样做的意义是什么!
------解决思路----------------------
1.
new Function("return"+date)是用字符串为函数内的代码来创建个匿名函数,函数后面的()实际上是执行函数的运算符。这要是用于执行字符串内的代码
还能写成
return eval(date);
2.
js中的函数和java,C#中的函数不一样
js中的函数其实是一种数据,与数值,数组和字符串是一样的。
可以赋值传递给变量,设置属性等
一个函数后面的()实际上是执行函数的运算符
所以在赋值传递函数时后面是不加()的
3.
自己查“闭包”一词
------解决思路----------------------
就个人理解说一下看法,欢迎高手们拍砖。
1.
rerurn(new Function("return"+date))();
还可以: rerurn(eval("return"+date))();
为什么这么写的原因是为了使用系统内置函数对象来构建一个函数,目的就是为了简写某些字符串。
但不推荐这样做,这样是有风险的:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions_and_function_scope
2.
不能写成c()的原因是,c()是一个结果(值),c是一个引用指向(址)。
而一般写在a里边的是为了让a去得到这个结果,不是ccc这儿就得到结果,比如:a.ccc();而不是a.ccc;
这是一种习惯,不是一个规则。
3.
一般也可以拆开写,比如function a(){}; function b(){},只所以写在里边的原因,个人猜测是为了保证函数名的唯一或可访问。如果放在外边,有可能会被其它模块代码影响。比如某另外一个.js中也有同样的b名字的函数。
1. rerurn(new Function("return"+date))();求详细解释代码为什么这么写,还能怎么写。
2. var a =
{
"aaa":a,
"bbb":b,
"ccc":c
}
此处的a和b都是变量,而c却为函数,为什么c可以是函数,而不是写成这个格式"ccc"=c()
3.有时候function a()
{
function b()
}
方法里面有方法,这样做的意义是什么!
------解决思路----------------------
1.
new Function("return"+date)是用字符串为函数内的代码来创建个匿名函数,函数后面的()实际上是执行函数的运算符。这要是用于执行字符串内的代码
还能写成
return eval(date);
2.
js中的函数和java,C#中的函数不一样
js中的函数其实是一种数据,与数值,数组和字符串是一样的。
可以赋值传递给变量,设置属性等
一个函数后面的()实际上是执行函数的运算符
所以在赋值传递函数时后面是不加()的
3.
自己查“闭包”一词
------解决思路----------------------
就个人理解说一下看法,欢迎高手们拍砖。
1.
rerurn(new Function("return"+date))();
还可以: rerurn(eval("return"+date))();
为什么这么写的原因是为了使用系统内置函数对象来构建一个函数,目的就是为了简写某些字符串。
但不推荐这样做,这样是有风险的:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions_and_function_scope
2.
var a = {
"aaa" : a,
"bbb" : b,
"ccc" : c
}
不能写成c()的原因是,c()是一个结果(值),c是一个引用指向(址)。
而一般写在a里边的是为了让a去得到这个结果,不是ccc这儿就得到结果,比如:a.ccc();而不是a.ccc;
这是一种习惯,不是一个规则。
3.
function a(){
function b()
}
一般也可以拆开写,比如function a(){}; function b(){},只所以写在里边的原因,个人猜测是为了保证函数名的唯一或可访问。如果放在外边,有可能会被其它模块代码影响。比如某另外一个.js中也有同样的b名字的函数。