全局属性、全局方法

原创文章,转摘请注明出处:苏福:http://www.cnblogs.com/susufufu/p/5853342.html

第一普及几独自己总的怪实用又坏基础的学识:(呵呵,仅仅是读书权威指南的笔记而已)

typeof
返回的凡字符串,有8种可能:”number”、”string”、”boolean”、”object”、”function”、”undefined”、”symbol”(ES6)、宿主对象类型

假值:false、 null、 undefined、 0 、-0 、NaN、””

真值:除了上述之值,其他价值均为真值;

目标:除了字符串字面量、数字字面量、true、false、null、undefined之外,其他价值都是目标!

数字a 转 字符串:

  • a.toString(n) //n表示进制
  • a.toFixed(i)   a.toPrecision(j)  //i为小数位数,j为而显得位数
  • a.toExponential(i) //科学计数形式

字符串s
转数字:转换失败返回NaN,忽略前置的空格,尽可能多的变换数字,忽略后面的非数字内容,其中’0X’、’0x’开头的虽然把她当着16迈入制数来转换

  • parseInt(s,n) //n代表进制,可选取参数,把s当着n进制数来转为十进制数
  • parseFloat(s) //转为浮点数

主题开始:(以下是我一边翻书,一边查MDN,一边 baidu,权衡后收获的总结)

表示一个大概的价的大局属性:

Infinity 

一个数值,表示无穷大,有Infinity和-Infinity。

  • Infinity 的初始值是 Number.POSITIVE_INFINITY。
  • 用0作除数会起Infinity
  • 比无穷大还蛮的价仍然是无穷大

  • Infinity(正无穷大)大于其他价值。该值和数学意义及之无边大生像,例如任何在乘以 Infinity 结果也 Infinity, 任何数值(除了Infinity 和
    -Infinity)除以 Infinity 为
    0。
  • NaN 属性是一个不行配置(non-configurable)、不可枚举、不可写(non-writable)的性质,所以无法用 for/in
    循环来枚举 NaN 属性,也非克用 delete
    运算符来删除其。

NaN

表示 Not-A-Number 的价。NaN 属性的初始值就是 NaN,和 Number.NaN 的值一样。

  • 当现世浏览器被(ES5挨), NaN 属性是一个不得配置(non-configurable)、不可枚举、不可写(non-writable)的性能,所以无法使用 for/in
    循环来枚举 NaN 属性,也不能够因此 delete
    运算符来删除其。
  • 而是每当ES3丁,这个特性之价值是足以于重复改的,但是也当避免覆盖。
  • 相当号运算符(== 和 ===) 不克叫用来判断一个值是否是 NaN。必须利用 Number.isNaN() 或 isNaN() 函数。
  • NaN
    及所有值都未抵,包括它和谐(在JavaScript中唯一一个休对等自己之价):NaN === NaN;        //
    false
  • NaN是一个数字,类型也number :typeof NaN
     //number 
  • NaN转为数字也NaN,转为布尔值为false

  • 0 除以0会回来NaN
    ,但是别数除以0则无见面回去NaN,而是Infinity。

undefined

每当JavaScript中,undefined这个词来差不多重复意思。undefined是大局对象的一个特性

  • 一个未初始化的变量的价值吗undefined,一个未曾传到实参的形参变量的价为undefined,如果一个函数什么都非返,则该函数默认返回undefined.

  • 首字母大写的Undefined表示的是均等种植多少类,小写的undefined表示的是属这种数量类的唯一的一个值.

  • 在JavaScript代码中,你见到底undefined最有或是大局对象的一个属性,该属性的初始值是就是前所说之原始值undefined,还有种状况就是,这个undefined是独组成部分变量,就比如其他一般变量一样,没有其它特殊性,它的值不必然是undefined,但通常情况下还是的.下面我们所说之undefined,都凭借的凡window.undefined这个属于性.

  • 每当ES5中,window.undefined成了一个不足写,不可配置的数码性,它的价值永远是undefined,但是undefined这个词不是保留字,可以被再声明并赋值,所以一直运用undefined是无保证的,可以据此void
    0来取一个尊重的undefined。

  • 得使用严格等运算符===来判定一个价值是否是undefined,而无克应用普通的相当于运算符==,因为以JavaScript中null == undefined是返true的

  • 若是一个变量根本无为声称,只有使typeof判断才不见面报错typeof x === ‘undefined’。用等运算符判断会抛来非常。(对已经声明但非初始化的同非声明的变量执行typeof,都归”undefined”。)
  • undefined转为数字为NaN,转为布尔值为false

null 

null 是一个javascript字面量,表示空值,它是javascript原始值之一。

  • null 常被放在要一个对象,但是非引用任何对象的参数位置,null表示一个缺损对象指针,typeof操作会返回”object”。

  • 每当 JavaScript
    最初的实现中,JavaScript
    中之价值是由于一个表示项目的价签及骨子里数据值表示的。对象的项目标签是0。由于 null 代表的是空指针(大多数阳台下值为0x00),因此,null的种标签也成了0,typeof null就荒唐的回了”object".

  • null转为数字为0,转为布尔值为false 

null 与 undefined** 的区别**:null是配面量,undefined是全局对象的特性

  • typeof null        // object 

  • typeof undefined   // undefined

  • null === undefined // false

  • null  == undefined //
    true(null会执行类型转换) 

null与空对象{}的别:个人了解呢null未被分配内存,而{}分配了内存,只是价值也空

var a = {};  

var b = null;

a.name = ‘realwall’;

b.name = ‘jim’; //这里会报错,b为空指针对象,不克像平常对象同一直上加属性。

 

实践一定功能并回结果的全局方法:

eval(string)

eval()是一个五星级函数并且和其他对象无关。

  • eval()的参数是一个字符串。如果字符串表示了一个表达式,eval()会针对表达式求值。如果参数表示了一个还是多只JavaScript声明, 那么eval()会实行声明。不要调用eval()来吧算数表达式求值; JavaScript
    会自动吗算数表达式求值。

  • 若一旦拿算数表达式构造成为一个字符串,你可以用eval()在随后对那求值。

  • 而参数不是原始字符串,eval()将会晤将参数原封不动的回。
  •  eval()只能直接调用,不得以间接调用,如采用变量来引用eval(),然后调用她。那么可能会见有运行时左

  •  eval只是一个不足为奇的函数,只不过他有一个快速通道通向编译器,可以拿string变成可实行之代码。当Function
    , setInterval 和
    setTimeout这几乎单方法接收一个字符串作为参数时,内部调用了eval()方法

  •  eval通常用在部分急需动态执行字符串,或以字符串转为javascript对象的观,比如用json字符串转为javascript对象。

  •  eval()函数并无会见创造一个新的作用域,并且其的作用域就是它们所当的作用域。可以用window.eval()的方来将她的作用域变为全局(兼容IE8的呼应措施也window.execScript)

  • 避以不必要之景象下以eval:eval() 是一个悬的函数, 它可像所有调用者的权能一样调用代码。如果您以了字符串来运行eval(),那么你的代码可能受恶意方(不怀好意的食指)影响,
    通过在使用方的机及用恶意代码,可能让您错过在网页还是扩展程序上之权能。eval() 可读性差、不便民优化及调节、有性消耗。在另外实用eval()的地方,基本都得以来一般的替代方案 

isFinite(testValue)

它是大局方法,不跟外对象有涉嫌。你可以为此这法子来判定一个数字是否是鲜数字。isFinite 方法检测它们参数的数值。他会见率先尝试用参数转换为一个数值,如果参数是 NaN、Infinity、-Infinity,则赶回false,其他返回 true。

isNaN(testValue)

就此来判定一个价是否也 NaN。注:isNaN函数包含有充分有趣的强制转换规则;你为堪透过 ECMAScript 6
中定义之 Number.isNaN() 或者 typeof 来判断一个价值是否为非数值

  • 假如isNaN函数的参数不是Number列, isNaN()会率先尝试以是参数转换为数价,然后才会指向转移后底结果是否是NaN开展判定(空字符串和布尔值会给胁持转换为数值0要1,对它们isNaN返回false)而isNaN(undefined)返回true

  • ECMAScript (ES6)包含了Number.isNaN()函数。通过Number.isNaN(x)来检测变量x是否是一个非数值将会晤是平栽保险的做法。然而,在缺少Number.isNaN函数的动静下, 通过表达式(x != x) 来检测变量x是否是NaN会更加可靠。

parseFloat(string)

用参数中指定的字符串解析成一个浮点数字并返回回.parseFloat是个全局函数,不属其他针对象.

  • 参数字符串前置的空白符会被忽略。
  • 它们见面正确分析:正负号(+或-),数字(0-9),小数点,或者对记数法被的指数(e或E),当它们遇到任何字符时,会忽视之后的装有字符,并当即回去结果
  • 若是参数字符串的第一个字符不能够叫解析成数字,则parseFloat返回NaN

  • 绝好通过调用isNaN函数来判定parseFloat的回来结果是否是NaN。如果让NaN作为了任性数学运算的操作数,则运算结果肯定为是NaN.

  • parseFloat 也可转移和归Infinity值. 可以使用isFinite 函数来判断结果是否是一个事先的数值
    (非Infinity, -Infinity, 或 NaN).
  • 该函数通过正则表达式的办法,在得复严地转换float值时想必会见立竿见影:
    (只领纯数字值)

    var filterFloat = function (value) {
    if(/^(-|+)?([0-9]+(.[0-9]+)?|Infinity)$/.test(value)){
    return Number(value);
    }
    return NaN;
    }

 

parseInt(string,
radix)

拿加以的字符串以指定基数(radix/base)解析成整数。radix是一个2至36中间的平头值,用于指定转换中动用的基数。比如参数”10″表示以我们常见用的十进制数值系统。一连指定该参数可以消除阅读该代码时之迷惑并且保证易结果但预测。当忽略该参数时,不同的贯彻环境或出不同之结果。

  • parseInt 函数将第一独参数(字符串)解析并试图返回一个平头或NaN(Not a Number)。如果第一独字符不克给转换成数字,parseInt返回NaN。如果结果莫是NaN,那么回回值是将第一只参数作为是radix参数指定的进制下之高频,然后拿它们换成十进制的整数

  • 假设 parseInt 遇到了未属于radix参数所指定的基数中的字符,那么该字符和后底字符都拿吃忽视。接着返回就解析的平头部分。parseInt 将截取整数局部。开头和最后的空白符允许存在,会于忽视。

    parseInt(“10546”, 2); //2
    parseInt(“546”, 2); //NaN
    parseInt(“FXX123”, 16); //15
    parseInt(“12″,13); //15
    parseInt(” -17″, 8); //-15
    parseInt(“0x11”, 16); //17
    parseInt(“0x11”, 0); //17
    parseInt(“0x11”); //17

每当没有点名基数,或者基数为 0 的情事下,JavaScript
作如下处理:

  • 而字符串 string 以”0x”或者”0X”开头, 则基数是16
    (16进制).
  • 若果字符串 string 以”0″开头,
    基数是8(八进制)或者10(十进制),那么具体是哪位基数由实现环境控制。ECMAScript 5 规范不再允许parseInt函数的兑现环境把以0字符开始之字符串作为八进制数价值,ECMAScript 5
    规定下10,但是并无是兼备的浏览器都仍这规定。因此,永久都设强烈为出radix参数的值
  • 如字符串 string 以另外任何价值开头,则基数是10
    (十进制)。

一个复严苛的方式来分析整型值:(任何不享实际意义数字值的价值均归NaN)

filterInt = function (value) {
if(/^(\-|\+)?([0-9]+|Infinity)$/.test(value)){
return Number(value);
 }
return NaN;
}
filterInt('421op'); //NaN

 

encodeURI(URI)

针对统一资源标识符(URI)进行编码的主意。它采用1及4个转义序列来代表每个字符的UTF-8编码(只有由少数单代理字符区组成的字符才用四只转义字符编码)。参数URI是一个完好的URI.

  • 倘若一个URI是共同体的URI,那么不论是需对那些保留的又在URI中发生异乎寻常意思的字符进行编码。
  • encodeURI 会替换除以下字符之外的享有字符,即使她拥有确切的UTF-8转义序列:

类型

包含

保留字符

; , / ? : @ & = + $

非转义的字符

字母 数字 – _ . ! ~ * ‘ ( )

数字符号

#

  • 请注意,encodeURI 自身无法来能够适用于HTTP GET 或 POST
    请求的URI,例如对于 XMLHTTPRequests, 因为 “&”, “+”, 和 “=”
    不会见为编码,然而当 GET 和 POST 请求被其是特殊字符。然而encodeURIComponent斯方法会对这些字符编码。

  • 除此以外,如果打算编码一个非高-低位完整的代理字符,将会见扔来一个 URIError 错误,例如:

    // 编码高-低位完整字符
    console.log(encodeURI(‘\uD800\uDFFF’));
    // 编码单独的高位字符抛来 “Uncaught URIError: URI malformed”
    console.log(encodeURI(‘\uD800’));
    // 编码单独的没有字符抛来 “Uncaught URIError: URI malformed”
    console.log(encodeURI(‘\uDFFF’));

  • 再者用留意,如果URL需要按照较新的RFC3986规范,那么方括号是深受保存的(给IPv6),因此对那些并未给编码的URL部分(例如主机),可以采取下的代码:

    function fixedEncodeURI (str) {
      return encodeURI(str).replace(/%5B/g, ‘[‘).replace(/%5D/g, ‘]’);
    }

 

encodeURIComponent(str)

举凡对合资源标识符(URI)的一对进行编码的法子。它用同样及四只转义序列来代表字符串中的每个字符的UTF-8编码(只有由简单个Unicode代理区字符组成的字符才用四单转义字符编码)。参数str是String.
URI 的有。

  • 其转义除了字母、数字、(、)、.、!、~、*、’、-和_外的保有字符。

  • 顾,如果准备编码一个非高-低位完整的代办字符,将会晤扔来一个 URIError 错误

  • 为避免服务器收到不可预知的求,对另外用户输入的作为URI部分之情而都亟待为此encodeURIComponent进行转义。比如,一个用户或会见输入”Thyme &time=again”作为comment变量的同有些。如果非下encodeURIComponent对是内容展开转义,服务器得到的将是comment=Thyme%20&time=again。请小心,”&”符号和”=”符号来了一个初的键值对,所以服务器得到两独键值对(一个键值对是comment=Thyme,另一个尽管是time=again),而休是一个键值对。

  • 对于 application/x-www-form-urlencoded (POST)
    这种数据方式,空格需要吃轮换成
    ‘+’,所以普通采取encodeURIComponent 的时段还会见管 “%20” 替换为 “+”。
  • 为还严峻的仍 RFC
    3986(它保留 !, ‘, (, ),
    和 *),即使这些字符并从未正规划定 URI
    的用途,下面这种方法是于安全的:

    function fixedEncodeURIComponent (str) {

    return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
    

    }

 

decodeURI(encodedURI)

用以解码由 encodeURI 方法要其它类似方式编码的合资源标识符(URI)。将已经编码 URI
中拥有能认得别的转义序列转换成为原来字符,但未能够解码那些休会见吃 encodeURI 编码的内容(例如
“#”)

 decodeURI("https://developer.mozilla.org/ru/docs/JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
 // "https://developer.mozilla.org/ru/docs/JavaScript_шеллы"

 

decodeURIComponent(encodedURI)

用以解码由 encodeURIComponent 方法还是其它类似方式编码的片段联合资源标识符(URI)。参数encodedURI
是编码后的一对 URI

escape() 已给丢弃
unescape()  已受丢弃

 

 

 

相关文章

网站地图xml地图