js 一些你不可忽視的細節

2021-08-27 19:08:12 字數 2839 閱讀 5720

一、變數宣告

如果在var語句中沒有初始化變數,變數自動取 jscript 值undefined。儘管並不安全,但宣告語句中忽略var關鍵字是合法的 jscript 語法。這時,jscript 直譯器給予變數全域性範圍的可見度。當在過程級中宣告乙個變數時,它不能用於全域性範圍;這種情況下,變數宣告必須用var關鍵字。

當要宣告乙個變數並進行初始化,但又不想指定任何特殊值,可以賦值為 jscript 值 null。

在 jscript 中nullundefined的主要區別是null的操作象數字 0,而undefined的操作象特殊值nan(不是乙個數字)。對null值和undefined值作比較總是相等的。

二、判斷物件 undefined

// 這種方法不起作用

if (x == undefined)

// 作某些操作

// 這個方法同樣不起作用- 必須檢查

// 字串 "undefined"

if (typeof(x) == undefined)

// 作某些操作

// 這個方法有效

if (typeof(x) == "undefined")

orif (typeof(x) === "undefined")

三、特殊的內部函式eval

var anexpression = "6 * 9 % 7";

var total = eval(anexpression); // 將變數 total 賦值為 5。

var yetanotherexpression = "6 * (9 % 7)";

total = eval(yetanotherexpression) // 將變數 total 賦值為 12。

四、jscript 支援四種型別的物件

內部物件、生成的物件、宿主給出的物件(如 internet 瀏覽器中的 window 和 document)以及 activex 物件(外部元件)。

五、建構函式

// pasta 是有四個引數的構造器。

// 第一部分與上面相同。

function pasta(grain, width, shape, hasegg)

// 實際的用來顯示 past 物件內容的函式。

function pastatostring()

六、jscript 保留字

保留詞

break

delete

function

return

typeof

case

doif

switch

varcatch

else

inthis

void

continue

false

instanceof

throw

while

debugger

finally

newtrue

with

default

fornull

try

為將來保留的詞

abstract

double

goto

native

static

boolean

enum

implements

package

super

byte

export

import

private

synchronized

char

extends

intprotected

throws

class

final

inte***ce

public

transient

const

float

long

short

volatile

當選擇識別符號時避免使用已經在內部 jscript 物件或函式中使用的詞,如stringparseint

七、使用建構函式來建立物件

var myobject = new object();             // 建立沒有屬性的通用物件。

var mybirthday = new date(1961, 5, 10); // 建立乙個 date 物件。

var mycar = new car(); // 建立乙個使用者定義的物件,並初始化其屬性。

八、js模擬jquery trim函式

// string 建構函式的原型物件的乙個方法。

string.prototype.trim = function()

九、== 與 === 區別

jscript 是一種具有自動強制的自由型別語言。因此,儘管實際上不同型別的值是不相等的,但對下述示例中的表示式求值都將得到 true。 

"100" == 100;

false == 0;

要核對型別與值都一致,用「嚴格相等」運算子(===)。下面兩個表示式的值為 false:

"100" === 100;

false === 0;

C 的一些細節

1.c 中,將負數賦值給unsigned是完全合法的。例如,將 1賦值給unsigned char,那麼結果是255.2.c 中,double的精度和計算速度都要超過float,long double則需要承擔額外的執行代價。3.std ou t hi d endl 等價於std out hi 4....

迴圈的一些細節

1 迴圈執行次數相同,大迴圈放在外面還是小迴圈放在外層效率高呢?int end1 10 int end2 100 int end3 1000000 long starttime system.nanotime 開始時間 for int i 1 i end3 i long endtime system...

SDWebImage的一些細節

清空快取 cleandisk 清除過期快取,計算當前快取的大小,和設定的最大快取數量比較,如果超出那麼會繼續刪除 按照檔案穿件的先後順序 cleardisk 直接刪除重新建立 7天 sdwebimagemanager sharedmanager imagecache cleandisk 取消當前所有...