javascript 函数初探 (二)

javascript的预定义函数:

javascript引擎中有一组可以随时调用的内建函数。

这些内建函数包括:

1. parseInt()

2. parseFloat()

3. isNaN()

4. isFinite()

5. encodeURI()

6. decodeURI()

7. encodeURIComponent()

8. decodeURIComponent()

9. eval()

=================>>>>>

  黑盒函数

  一般来说,当我们调用一个函数的时候,程序是不需要知道该函数的内部工作细节的。我们可以将其看作一个黑盒子,只需给他传递一些参数,便可以获取她输出返回的结果。

这种思维可以应用到任何函数中。

<<<<<=================

 parseInt:



  w3school解释是:parseInt() 函数可解析一个字符串,并返回一个整数。 即:parseInt(string, radix);

函数有两个调用方式

1、指定radix,这也是推荐的方式,很不幸我之前都不是这样做的

2、不指定radix,即:parseInt(string)。虽然简单,但规则很多,这也是本文阐述内容的核心。

parseInt(string, radix)
radix,表示转换的基数,也就是我们常说的2进制、8进制、10进制、16进制等。范围从2~36,但我们在JS中一般调用该方法时,基本都是以10为基数进行转换的。

如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

“string”参数应用的详细规则如下:

1)如果都是字母,返回:NaN,例:

 window.onload = function testParse() {
          alert(parseInt("abc", 10));
 }

2)如果都不是字母,返回:123,例:

 window.onload = function testParse() {
         alert(parseInt("123", 10));
 }

3)如果字母和数字都存在,例:

window.onload = function testParse() {
         alert(parseInt("1x2bc", 10));  // 1
         alert(parseInt("df2bc", 10));  // NaN
}

这里涉及到两个规则:

1)如果参数“string”,以数字开头,则取截止到第一个字母出现之前的所有数字进行转换.上例中,第一个出现的字母是‘x’,取之前的数字串,只有一个数字‘1‘,结果就返回1

2)如果参数“string”,以字母开头,直接返回NaN.

  以上描述按照ECMAScript的解释(官方翻译,很给力):

  parseInt() 方法首先查看位置 0 处的字符,判断它是否是个有效数字;如果不是,该方法将返回 NaN,不再继续执行其他操作。但如果该字符是有效数字,该方法将查看位置 1 处的字符,进行同样的测试。这一过程将持续到发现非有效数字的字符为止,此时 parseInt() 将把该字符之前的字符串转换成数字。

  

 parseFloat



  parseFloat() 函数可解析一个字符串,并返回一个浮点数。

该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字,而不是作为字符串。

  语法:parseFloat(string);也就是说默认是十进制的,其他的基本同上述是一样的

  提示和注释

  注意: 字符串中只返回第一个数字。

  注意: 开头和结尾的空格是允许的。

  注意: 果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。

  

 isNaN



  通过isNaN(),我们可以确定某个输入值是否是一个可以参与算术运算的数字。因而可以检测parseInt(),parseFloat()的调用是否成功。

isNaN(NaN) // true

isNaN(123) // false

isNaN(1.45) // false

isNaN(‘abc123‘) // true

  该函数也会试图将其接受的参数转化为数字

isNaN(‘123‘) // false

isNaN(‘abc123‘) // true

  NaN === NaN  // false

 isFinite



isFinite()可以检测输入是否是一个即非Infinity也非NaN的数字。

isFinite(InFinity)  // false

isFinite(-Infinity)  // false

isFinite(12) // true

isFinite(1e309) // false

  javascript 编码问题


本地 / Unicode

你可能对“本地”有点迷惑。刚开始,我也不理解,应该是编码之间转换才对。因为本地字符有编码,那么把这个编码转换成 Unicode 编码的说法很合理。其实,所有国家字符的 Unicode 编码都是确定的,无论是你输入的是哪国语。

Unicode 十进制和十六进制编码分别为:

例子lizi 
例子lizi

本地到 Unicode 转换的 JavaScript 代码如下所示:

function nativeToUnicode(str) {
    var des = [];
    for (var i = 0; i < str.length; i++)
        des.push("&#" + str.charCodeAt(i) + ";");
        //des.push("&#x" + str.charCodeAt(i).toString(16) + ";");
    return des.join("");
}

Unicode 到本地转换的 JavaScript 代码如下所示:

function unicodeToNative(str) {
    var src = str.match(/&#(\d+);/g);
    if (src != null) {
        var des = [];
        for (var i = 0; i < src.length; i++)
            des.push(String.fromCharCode(src[i].replace(/[&#;]/g, "")));
        return des.join("");
    }
    return "";
}

说明:

  • String.charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
  • String.fromCharCode() 方法可接受一个指定的 Unicode 值,然后返回一个字符串。

本地 / UTF-8

UTF-8 是 Unicode 的实现方式之一,把定长编码改成变长的,减少了存储和传输的开销。从下面示例可以看到,中文是编码,而对用一个字节就能表示的英文字符,没有变化。

UTF-8 编码为:

例&#x5B

本地转换 UTF-8 的 JavaScript 代码如下所示:

function navtiveToUTF8(str) {
    return str.replace(/[^\u0000-\u00FF]/g, function ($0) { return escape($0).replace(/(%u)(\w{4})/gi, "&#x$2;") });
}

UTF-8 转换本地的 JavaScript 代码如下所示:

function utfToNative(str) {
    return unescape(str.replace(/&#x/g, ‘%u‘).replace(/;/g, ‘‘));
}

说明:

  • escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
  • unescape() 函数可对通过 escape() 编码的字符串进行解码。

本地 / ASCII

ASCII 码转换或不转换 ASCII 的编码为:

\u4f8b\u5b50lizi

\u4f8b\u5b50\u006c\u0069\u007a\u0069

本地转换 ASCII 的 JavaScript 代码如下所示:

function nativeToASCII(str, isIgnoreLetter) {
    var character = str.split("");
    var ascii = [];
    for (var i = 0; i < character.length; i++) {
        var code = Number(character[i].charCodeAt(0));
        if (!isIgnoreLetter || code > 127) {
            var charAscii = code.toString(16);
            charAscii = new String("0000").substring(charAscii.length, 4) + charAscii;
            ascii.push("\\u" + charAscii);
        }
        else {
            ascii.push(character[i]);
        }
    }
    return ascii.join("");
}

ASCII 转换本地的 JavaScript 代码如下所示:

function asciiToNative(str) {
    var character = str.split("\\u");
    var res = character[0];
    for (var i = 1; i < character.length; i++) {
        var code = character[i];
        res += String.fromCharCode(parseInt("0x" + code.substring(0, 4)));
        if (code.length > 4) {
            res += code.substring(4, code.length);
        }
    }
    return res;
}

本地 / URI 编码

URI 编码不用以上编码,它的主要是出于安全性考虑,让链接的内容不能一目了然地看到是什么,防止恶意的偷看者。下面是 cnblogs 的“找找看”检索链接,对其进行编码。

示例 4:

http://zzk.cnblogs.com/s?w=例子lizi&t=

URI 编码和组件编码分别为:

http://zzk.cnblogs.com/s?w=%E4%BE%8B%E5%AD%90lizi&t=

http%3A%2F%2Fzzk.cnblogs.com%2Fs%3Fw%3D%E4%BE%8B%E5%AD%90lizi%26t%3D

说明:

  • encodeURI() 函数可把字符串作为 URI 进行编码。
  • decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。
  • encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。
  • decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。

eval()函数请见下一篇 (。?_?)/~~~

详情请见==============》》》 http://www.cnblogs.com/liuning8023/archive/2012/12/09/2810518.html

时间: 2024-10-28 11:53:08

javascript 函数初探 (二)的相关文章

JavaScript 函数(二)

一.匿名函数 1.匿名函数 没有名字的函数即称为匿名函数. 2.使用方法 a.将匿名函数赋值给一个变量,这样就可以通过变量进行调用 b.匿名函数自调用 3.关于自执行函数(匿名函数自调用)的作用:防止全局变量污染. Demo: 1 //1 函数声明 - 命名函数 2 function fn() { 3 // 函数体 4 } 5 6 //2 函数表达式 -- 后半部分 匿名函数 7 var fn = function () { 8 // 函数体 9 } 10 11 // 3 自调用函数 -- 当函

javascript 函数初探 (一)

神马是函数? 所谓函数,本质上是一种代码的分组形式.我们可以通过这种形式赋予某组代码一个名字,以便与之后的调用.下面,我们来示范以下函数的声明: function sum(a, b){ var c = a + b; return c; } 一般来说,函数声明通常由一下以下几部分组成: 1. 关键词 function: 2. 函数名称,即这里的sum; 3. 函数所需的参数,即这里的a, b.一个函数通常具有0个或多个参数.参数之间用逗号分隔. 4. 函数所要执行的代码块,我们称之为函数体. 5.

JavaScript函数(二)

一.函数调用     1.函数调用:函数在定义好之后,不能自动执行,需要进行调用. 2.调用方式:在<script>标签内调用.在HTML文件中调用. <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Title</title> </head> <body>

javascript 函数初探 (五)--- 几种类型的函数

即时函数: 目前我们已经讨论了匿名函数在回调时的应用.接下来,我们来看看匿名函数的另一种应用实例 --- javascript即时函数: 比如: ( function(){ alert('her'); } )() 虽然这种语法看上去有点吓人,但其实非常的简单 --- 我们只需将匿名函数的定义放进一对括号中,然后外面再紧跟一对括号即可. 其中第二对括号起到了 ‘立即调用’ 的作用,同时她也是我们向匿名函数传递参数的地方. ( function(a){ alert( 'her is' + a + '

javascript 函数初探 (四)--- 回调函数

回调函数 既然函数与任何被赋值给变量的数据是相同的,那么她当然可以像其他数据那样被定义.删除.拷贝,以及当成参数传递给其它函数. 我们定义一个函数,这个函数有两个函数类型的参数,然后他会分别执行这两个参数所执行的函数. function her(){ return a() + b(); } function one(){ return 1; } fucntion two(){ return 2; } her(one, two) // 3 实际上,我们也可以直接用匿名函数(即函数表达式)来替代on

javascript 函数初探 (三)

javascript 变量的作用域: 这是一个至关重要的问题.特别是当我们从别的语言转向javascript时,必须要明白一点,即在javascript中,变量的定义并不是以代码块作为作用域的,而是以函数作为作用域.也就是说变量是在某个函数中定义的,那么她在函数以外的地方是不可见的.而如果函数是定义在if或for这样的代买块中,那么她随处可见. 全局变量:是定义在所有函数只外的变量.相反局部变量则是定义在某个函数中.其中,函数内的代码可以像访问自己的局部变量一样访问全局变量,反之则不可以. va

javascript 函数初探 (六)--- 闭包初探#1

首先我们来看一个函数: var a = 'global variable'; var F = function(){ var b = 'local variable'; var N = function(){ var c = 'inner local'; return b } return N; } cosole.log(b) // b:is not defind; 函数F中包含了局部变量b,因此b在全局空间里是不可见得. 函数N有自己的私有空间,同时也可以访问F()和全局空间,所以变量b对她来

JavaScript权威设计--JavaScript函数(简要学习笔记十二)

1.作为命名空间的函数 有时候我们需要声明很多变量.这样的变量会污染全局变量并且可能与别人声明的变量产生冲突. 这时.解决办法是将代码放入一个函数中,然后调用这个函数.这样全局变量就变成了 局部变量. 如: function my(){ } my(); //别忘记调用 这段代码定义了一个单独的全局变量:名叫"my"的函数. 我们还可以这么写,定义一个匿名函数: (function(){ //这里第一个左括号是必须的,如果不写,JavaScript解析器会将 //function解析成函

Javascript常用方法函数收集(二)

Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); } 32.判断是否打开视窗 function isViewportOpen() { return !!document.getElementById('wixMobileV