js代码为什么要写成这样了?

整个一个js中就一个大的function

new function() { 
    .....
}

还有这样的代码

( function() {
        ......
    } )();

 

不明白出于什么考虑为什么要写成这样

为了控制作用域,避免名字冲突。

JavaScript中变量和函数的作用域遵循词法作用域(静态作用域),有全局作用域与局部作用域。但是与其他常见的C++等语言不同,JavaScript中for循环、单独的语法块({ ... })是不会引入新的局部作用域的;能引入新的局部作用域的只有函数。
代码中许多短的名字都会经常被用到,例如i、j、x、y,或者helper之类;如果同名的变量以不同的方式被使用,但出现在同一个作用域里,就会出现所谓的“名字空间污染”,比较容易出错。
举例来说,C++里:
[code="cpp"]#include
using namespace std;

int main() {
int n = 0;
for (int i = 0; i < 1; i++) {
int n = 1; // 声明并初始化了一个新的n;for语句的语句块会引入新的局部作用域
}
cout << n << endl; // 0

return 0;

}[/code]
然后JavaScript:
[code="js"]function test() {
var n = 0
for (var i = 0; i < 1; i++) {
var n = 1 // 没有声明新的n;只是对前面的n赋了新值而已
}
print(n) // 1
print(i) // 1;i在此也可以访问
}[/code]
JavaScript的函数能引入新的局部作用域,回避了上面的问题;同时也可以创建新的闭包。
[code="js"]function test() {
var n = 0
for (var i = 0; i < 1; i++) {
(function () { // 声明了一个匿名函数
var n = 1 // 声明并初始化了新的n
})() // 直接在声明完匿名函数后调用之
}
print(n) // 0
print(i) // 1;i在此也可以访问
}[/code]

你省略了一些吧,第一种写法应该是
[code="java"]var func_name=new function(){
...
}[/code]
类似于一个类
第二种
code="java" {

......

} )($); [/code]
如果后面括号有东西的话(jQuery/$)就是jquery插件,没有的话我就不知道是什么了

第一种楼上说的对,第二值是建立对像,对执行他

第一种楼上说的对,第二种是建立对像,然后执行他