JS isNaN 问题

JavaScript013

JS isNaN 问题,第1张

在javascript中,没有对象、直接调用的函数,都是全局函数。说是全局,其实只不过是从属于内置对象window的属性或方法而已。也就是说,isNaN()等价于window.isNaN()。其它方法属性也是类似,比如:

// 不属于任何对象的i

var i = 5

function test(){

    alert(i)

}

test()// 5

alert(i) // 5

alert(window.i) // 5

以上几种alert出来的i都是5,说明window.i其实就是声明的那个i。

isNaN是window对象的一个方法,它的作用是判断参数是不是一个NaN。其实也就是看参数能不能转化为数字,如果能,就返回false;不能转化为数字,则返回true。例如:

isNaN('134') // false,字符串134可以转化为数字

isNaN('1a34') // true,字符串1a34不能转化为数字

isNaN('0x34') // false,字符串0x34能转化为数字,十六进制

isNaN(true) // false,布尔型变量能转化为数字,值为1

有一点要注意,在上面已经提到,布尔型值是能够转换成数字的,比如:

alert(true + 1) // 结果为2,因为true会转化为数字1,而false会转化为数字0

但是,如果用下面的代码,就会得到NaN:

alert(parseInt(true)) // NaN

parseInt和isNaN类似,都是window的一个方法,其作用是将参数强制转化为整数,类似的还有window的另一个方法parseFloat,将参数强制转化为浮点数。显然这里parseInt(true)得到了一个NaN,但isNaN(true)得到的却是false。

这两者之间的差别,太具体的我就不清楚了。

木马下载器

中 文 名:“TrojanDownloader.Small”变种BLL

病毒长度:266713字节

病毒类型:木马下载器

危害等级:★★

影响平台:Win 9X/ME/NT/2000/XP/2003

TrojanDownloader.Small.bll“TrojanDownloader.Small”变种bll是一个木马下载器,开启特定的IRC通道,盗取网上银行、在线交易用户输入的帐户和密码。“TrojanDownloader.Small”变种bll运行后,自我复制到系统目录下,并在系统目录下释放一个黑客工具,文件名是XXX32.dll。修改注册表,实现开机自启。在已开启的窗口搜索与输入网上银行、在线交易用户帐户密码相关的主题,一经发现便开始记录键击,盗取用户机密信息。开启TCP 1051端口,连接指定的IRC服务器,侦听黑客指令,开启或终止某些特定的进程和服务,删除或修改文件夹,对指定目标执行DDoS攻击,利用被感染的计算机转发垃圾邮件等。修改hosts文件,阻止用户对某些常见安全网站的访问。另外,“TrojanDownloader.Small”变种bll还可以自升级。

Kent.Chan

病毒名称:trojandownloader.small

病毒名称:trojandownloader.small

其它名称:

病毒属性:特洛伊木马 危害性:低危害 流行程度:低

具体介绍:

trojandownloader.small病毒有很多种变体,可以参照以下方法进行处理:

1、 使用KILL最新病毒库版本进行检测和清除。

2、 手工清除方法,可以从任务管理器和资源管理器中删除病毒的进程和程序,以下是其中一种变体的示例:

从任务管理器中关闭以下进程:6432ormshh.exe

从资源管理器中删除以下文件:6432ormshh.exe

3、 清空IE缓存,如果清空后还能查到,设置文件夹属性,显示所有文件和显示系统文件夹内容,按照杀毒软件提示的那个路径删除那个病毒文件即可!

4、 也可以参照以下方法处理:

(1)如果杀毒软件报告此木马是在 %windir%\Downloaded Program Files 目录下的情况。注意其中的 %windir% 代表的是您Windows的安装目录,比如:如果您使用的是Windows98/Me并且安装在C盘则此目录应该是C:\Windows\ Downloaded Program Files;如果是Windows2000/XP/20003并且安装在D盘,则目录应该是D:\WINNT\Downloaded Program Files。如果是这种情况请按下面的方法做:

依次打开IE的 工具/Internet选项/“Internet临时文件”处的“设置”/查看对象;

在打开的列表中查找一个“程序文件”是“MultiDist”的项目,如果找不到就不用继续了,请参考其他情况下的处理办法;如果找到它则在它名子上点右键,接着在弹出的菜单中点“删除”;

重新启动计算机;

依次打开 开始/运行 ,输入 cmd 后确定(这是在NT/2000/XP/2003下,9x/Me下请输入 command),进入到命令行模式,然后用DOS命令进入到 %windir%\Downloaded Program Files 目录下,找到 MulDist.ocx 文件后用del命令删除它。这里需要提醒一下,如果在此目录中找不到这个文件请进入到当前目录下的各个子目录中找找,找到后删除。

这样此木马就清除掉了,不过如果杀毒软件报告木马不是在 %windir%\Downloaded Program Files 目录下而是在 “系统目录:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\...” 目录下(如果您的win2000/nt/xp安装在C盘则就是 C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5)请使用下面的第2种方法清除它:

(2)操作系统使用的是Windows2000/XP/2003,并且杀毒软件报告此木马是在 系统目录:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\XXXX 目录下的情况。注意其中的“系统目录”代表的是您Windows2000/XP/2003安装的盘符,比如:如果您的win2000/nt/xp安装在C 盘则就是 C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\XXXX ,并且Content.IE5后面的XXXX代表的是不确定的子目录,不同的系统下情况都会不同,这可以根据杀毒软件的具体提示来确定,在记下这个目录及文件名后请按下面的方法做:

依次打开 开始/运行 ,输入 cmd 后确定(这是在NT/2000/XP/2003下),进入到命令行模式;

在命令行模式下进入到这个 系统目录:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\XXXX 目录中,找到杀毒软件提示的那个文件,找到后直接用del命令删除它就行了。

(3)木马不是在上面任何一种目录中的情况:

这个方法最简单,用资源管理器找到文件后直接删除它就行了,而不用在意杀毒软件的“解开再同清除”的提示,直接删除相应的cab或ocx文件都可以。

1、isNaN是Ecmascript提供的内置对象Global的一个函数,如下代码即可以检测

console.log(typeof isNaN)//打印function

2、function自然不是Number类型啦,严格来说,funcion属于对象类型,在其他语言中function是单独的一种数据类型,但是在js中Function类型是Object类型的派生类型。js中数据类型有如下:

字符串、数字、布尔、数组、对象(包括函数)、Null、Undefined

3、那么得出的结论如下

//自定义的函数

var myfc=function() {}

//全局函数,isNaN为ecma内置对象global的函数

var gloabfc=isNaN

//都是函数(函数的类型被ecma划分为对象类型)

console.log('myfc的数据类型为:'+typeof myfc)

console.log('gloabfc的数据类型为:'+typeof gloabfc)

//1、js是一门弱语言类型,其中弱指的是弱数据类型,也就是说变量的类型一开始并不会确定,当为变量赋值时会自动判断后隐式转换它的所有类型类型并进行转换。那么它的变量、表达式等在参与运算时,即使类型不正确,也能通过隐式转换来得到正确地类型。

//2、其他类型转为布尔运算时,如果一个对象(函数也是对象)存在,那么则为true。 如果不存在,会抛出异常,不是你想象中的false,哈哈!

//3、isNaN是存在一个函数,所以为true

function turnBoolean(param) {

if(param){

console.log(param+'的转换结果为:'+true)

}else{

console.log(param+'的转换结果为:'+false)

}

}

turnBoolean(myfc)

turnBoolean(gloabfc)

//其他数据类型转布尔值

turnBoolean(null)

turnBoolean(undefined)

turnBoolean(0)

turnBoolean('')

turnBoolean(1)

turnBoolean({})

其实总结就一句,因为isNaN函数(对象)存在,所以为true