<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>自执行函数表达式</title>
</head>
<body>
<!--
这种叫自执行函数表达式
在这种情况下,解析器在解析function关键字的时候,会将相应的代码解析成function表达式,而不是function声明。

// 下面2个括弧()都会立即执行
(function () { /* code */ } ()); // 推荐使用这个
(function () { /* code */ })(); // 但是这个也是可以用的

// 由于括弧()和JS的&&,异或,逗号等操作符是在函数表达式和函数声明上消除歧义的
// 所以一旦解析器知道其中一个已经是表达式了,其它的也都默认为表达式了
var i = function () { return 10; } ();
true && function () { /* code */ } ();
0, function () { /* code */ } ();

// 如果你不在意返回值,或者不怕难以阅读
// 你甚至可以在function前面加一元操作符号
!function () { /* code */ } ();
~function () { /* code */ } ();
-function () { /* code */ } ();
+function () { /* code */ } ();
-->
<script type="text/javascript">
var i = function(){ document.writeln('阅谁问群诵,水落清香浮'); return 10; }();
(function(){ document.writeln('一站式共享网络');}());
+function(){ document.writeln('onestopweb.cn');}();
</script>
</body>
</html>

效果图:

站长 自执行函数表达式和百度防盗站_html


 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>百度防盗站</title>
<script type="text/javascript">
!function(){
    try {
		//我的域名,网站被别人盗了,他只要没删除这段代码,还会跳回我的网站
        var chdmi = ['o','n','e','s','t','o','p','w','e','b','.','i','t','e','y','e','.','c','o','m'].join('');
        var chreg = eval('/' + chdmi.replace(/\./g, '\\.') + '/i');
        //如果是百度来的,跳转回我的域名对应的链接,只对百度有效
		if (!chreg.test(location.href) && /baidu/i.test(document.referrer)) {
            location.href = 'http://' + chdmi + location.pathname + location.search + location.hash;
        } else {}
    } catch(e) {}
} ();
</script>
</head>
<body>
<h3>阅谁问君诵,水落清香浮。</h3>
</body>
</html>

 

效果图:

从百度进来,如果不是对应的域名会跳转到指定的域名,例如:http://onestopweb.iteye.com/

 

理都懂,然并卵。因为只要细心查看,就发现问题所在。