竟然有这么变态的语言,函数之间居然可以私通今天用到JavaScript语言, 被这种语言的规则震惊了.JScript cod
竟然有这么变态的语言,函数之间居然可以私通
今天用到JavaScript语言, 被这种语言的规则震惊了.
- JScript code
function a(){ for(i=0;i<10;i++){};}var i = 5;a();document.writeln(i);//输出居然是10, 也就是说, 函数内部的i其实就是全局这个i. 变态的是, JavaScript有很多内置全局变量,再加上自己使用的, 这局部变量如果不声明的话, 你知道哪个就和全局变量相同了. 可是JavaScript居然就不要求变量需要声明.还有更变态的.
- JScript code
function a(){ for(i=0;i<20;i++){ } } function b(){ for(i=0;i<3;i++){ a(); } return i; } document.writeln(b());你猜输出是啥? 居然是21 ,合着这个i是可以大家一起用的呀. 可是如果你直接输出i,居然还说, 变量未定义, 不同函数共用局部变量, 但是函数外部不可以用, 这不是典型的私通吗? 明明底下通着呢, 还不能在公开场合说.
[解决办法]
你敢不敢加 一句下面的代码?
- JScript code
"use strict";
