js重要知识点
1.javascript是區分大小寫的。
2.NaN代表不是一個數字,它不等于任何東西,甚至連NaN===NaN都是false,唯一true的是isNaN(NaN)。
3.盡量使用===來代替==進行比較,因為前者會判斷數據類型是否一致,否則不比較直接返回false,而后者會自動轉換數據類型來比較。
4.null表示空,undifined表示未被定義。
5.不使用var聲明就直接使用的變量是全局變量,比如i=10;這個i就是全局變量,不推薦這樣使用,因為會造成變量沖突,比如一個頁面引用多個js,而多個js都有i變量,都是全局變量,那么將會亂套。可通過'use strict';這句話來強制變量必須加入var。
6.var a=“i‘m ok’”表示i'm ok.如果既包含“”又包含‘’,則可以用轉義符。比如var a='i\'m \"ok\"';表示i'm "ok"
7.字符串是不可變的,對字符串某個索引賦值,不會報錯但是也不會有任何結果。var s="i am ok";s[1]='x';是沒有效果的,s還是i am ok
8.JavaScript把null、undefined、0、NaN和空字符串''視為false,其他值一概視為true。
9.循環對象的方法。
var o = {name: 'Jack',age: 20,city: 'Beijing' }; for (var key in o) {if (o.hasOwnProperty(key)) {console.log(key); // 'name', 'age', 'city' console.log(o[key]); //'jack',20,'Beijing'} }10.循環數組的方法
var arr = ['Bart', 'Lisa', 'Adam']; for (var i in arr){console.log("hello,"+arr[i]); }?當然最好用 foreach方法。
var a = ['A', 'B', 'C']; a.forEach(function (element, index, array) {// element: 指向當前元素的值// index: 指向當前索引// array: 指向Array對象本身console.log(element + ', index = ' + index); });foreach方法對map和set同樣有效。
對set:
var s = new Set(['A', 'B', 'C']); s.forEach(function (element, sameElement, set) {// element: 指向當前元素的值
// sameElement: 也是當前元素
// set: 指向set對象本身console.log(element); });
對map
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]); m.forEach(function (value, key, map) {console.log(value); });當然我們不必在回調函數(我調用forEach,forEach在調用我function中的方法)中寫上所有的元素,比如我們只對element感興趣。則完全可以這樣寫。
var a = ['A', 'B', 'C']; a.forEach(function (element) {console.log(element); });?11.函數的兩種定義方式
方式一:
function abs(x) {if (x >= 0) {return x;} else {return -x;} }方式二:這說明我們可以把函數也理解成一種特殊的變量,事實上他可以進行賦值。比如var func2=func1;
var abs = function (x) {if (x >= 0) {return x;} else {return -x;} };12.JavaScript還有一個免費贈送的關鍵字arguments,它只在函數內部起作用,并且永遠指向當前函數的調用者傳入的所有參數。arguments類似Array但它不是一個Array:
function foo(x) {console.log('x = ' + x); // 10for (var i=0; i<arguments.length; i++) {console.log('arg ' + i + ' = ' + arguments[i]); // 10, 20, 30 } } foo(10, 20, 30);?13.我們在函數內部定義變量時,請嚴格遵守“在函數內部首先申明所有變量”這一規則。最常見的做法是用一個var申明函數內部用到的所有變量:
function foo() {varx = 1, // x初始化為1y = x + 1, // y初始化為2z, i; // z和i為undefined// 其他語句:for (i=0; i<100; i++) {...} }14.不在任何函數內定義的變量就具有全局作用域。實際上,JavaScript默認有一個全局對象window,全局作用域的變量實際上被綁定到window的一個屬性:因此,直接訪問全局變量course和訪問window.course是完全一樣的。同樣對方法也是一樣,調用foo()和window.foo()是一樣,調用alert()和window.alert()也是一樣。
15.判斷一個值是否為數字,有如下方法。
?--使用isNaN(翻譯過來就是 is Not a Number 是否不是一個數字),它的缺點在于會把NULL,空串,空格識別為0,即判斷為還是一個數字。
console.log(isNaN(" "));//false console.log(isNaN(NULL));//false console,log(isNaN(2));//false console.log(isNaN("xxx"));//true封裝成如下函數,可以判定是否為數字
function isRealNum(val){// isNaN()函數 把空串 空格 以及NUll 按照0來處理 所以先去除if(val === "" || val ==null){return false;}if(!isNaN(val)){return true;}else{return false;} }--使用正則表達式
如下表達式只要是數字就可以返回true.
function isNumber(val){var regPos = /^\d+(\.\d+)?$/; //非負浮點數var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //負浮點數if(regPos.test(val) || regNeg.test(val)){return true;}else{return false;}}?14.當js對象的鍵包含一些特殊符號的時候,比如如下的表單驗證。department.departmentName是一個json的鍵,這時候,我們需要用引號給它包含起來,不然會出現錯誤。同時,我們要取得這個鍵的值,需要用[],即:validForm.fields["department.departmentName"]
var validForm={message : 'This value is not valid',icon : {valid : 'glyphicon glyphicon-ok',invalid : 'glyphicon glyphicon-remove',validating : 'glyphicon glyphicon-refresh'},fields : {'department.departmentName' : {message : '表單校驗失敗',validators : {notEmpty : {message : '不能為空'},//遠程驗證,請求服務器接口后驗證 remote: {type: 'POST',url: './departmentNameOnly',validKey: 'valid',dataType:'json',message: '該部門名稱已經存在'}}},}}?13.在html的元素中,父子元素的click是可以傳遞的,比如一個父div,和一個子div,當我們點擊子div的時候,是會觸發父div的click事件的。所以,為了避免這種情況,我們可以在子div的click事件中添加如下代碼:event.stopPropagation();
?15.添加和移除disabled屬性的方法
//兩種方法設置disabled屬性 $('#area').attr("disabled",true); $('#area').attr("disabled","disabled"); //三種方法移除disabled屬性 $('#area').attr("disabled",false); $('#area').removeAttr("disabled"); $('#area').attr("disabled","");?
轉載于:https://www.cnblogs.com/roy-blog/p/8136087.html
總結
- 上一篇: 函数功能相关
- 下一篇: 关于JAVA项目中CLASSPATH路径