JavaScript some point
- 單引號雙引號沒有區別
- JavaScript允許對任意資料型別做比較:比如
false==0; //true 它會自動轉換資料型別再比較,很多時候,會得到非常詭異的結果;
false===0; //false 它不會自動轉換資料型別,如果資料型別不一致,返回false ,如果一致,再比較
,所以儘量使用=== - NaN與null不一樣 ,判斷NaN只能通過 isNaN()
- 浮點數比較
1 / 3 === (1 - 2 / 3); //false
機器無法處理無線迴圈的小數,要比較兩個浮點數是否相等,只能計算它們之差的絕對值,看是否小於某個閾值:Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
- static 模式 , 在js程式碼中新增一個字串
'user static';
,就表示使用static模式,(ps不是所有的瀏覽器都支援static模式),在這個模式下,宣告的變數必須是有 var 字首的,沒有var字首的變數表示全域性變數 - 轉義字元在js中,還可以unicode和ascii來表示字元用 , 比如
'\x41'
表示'A'
, - 字串連線,出了使用
+
,還可用ES6新標準,比如 var = {你好, ${name}, 你今年${age}歲了!
} - js的陣列,
var array = [1,2,'hello',NaN];
如果給陣列的長度賦值,會導致陣列長度改變,並且如果索引超過陣列長度的值,也會導致陣列變化,比如var array =['hello',1] ; array[4] = 3;
,這時陣列會變成['hello',1,undefined,undefined,3]
- 陣列的unshift 和 shift , shift會把陣列的第一個元素刪掉
- 關於陣列的一些方法,reverse,splice,slice,sort,conact(ps 這個方法並沒有修改原來的陣列,只是返回了一個新的陣列),join
- js所有物件的屬性名都是字串,js的物件設計很神奇,所以js可以動態的改變物件的屬性,比如刪除物件的一個欄位(delete xiaoming.age,這裡的物件和類有區別麼,如果沒有區別,一個物件的兩個例項,其中一個例項刪除了一個屬性,另一個會怎麼樣),in,hasownproperty)
- for in 迴圈陣列,得到的是string 不是int
var a = ['A', 'B', 'C'];
for (var i in a)
{ alert(i); // '0', '1', '2'
alert(a[i]); // 'A', 'B', 'C'
}
- 為什麼會存在set這個東西,set的foreach接受的function的前兩個引數都是元素本身
- foreach(foreach不要求引數一致) for...of for..,in
(ps)15. 計算機對於現實的程式碼表示是抽象,但是這些現實實物的現實語音的描述不也是抽象麼,無敵 - function裡面沒有return的話,也是又返回的,只不過返回是undefined,相對於java的方法,function有兩個特點,第一.引數處理 第二.function也是物件
- js引擎會自動在return後面補上
;
,所以需要有返回的時候return物理行後面不可以不跟東西。 - jsfunction的變數提升機制,所以對於js來說有一個規範,對於變數要在function開頭宣告全部。
- 全域性變數window,塊級引用變數let,宣告常量const
- js的this指標設計的有點迷啊,感覺這裡面是一個巨坑。
- 為了解決this的問題,有apply,call(ps。記住一切都是物件有助於理解js)
- 高階函式(ps,這樣可以提高js的上限),map和reduce是對運算的抽象,發現map和reduce不能改變當前的陣列,需要用新的陣列來接收。
- 存在問題 this、到底是個什麼東西
- split() 為什麼不是一個function,在什麼情況下會報這個錯誤
- filter 刪掉return false,留下return true 的arguments
- 關於js replace。 這個函式只能替換第一個字元,如果想要替換找到的所有字元,需要用到正規表示式
/\x/g
,其中x
就是期望替換的內容。 - sort 預設實現是比較ASCII碼錶數值的大小,對於數字,會先將數字轉化為字元,然後比較字元的ASCII碼錶。
- 閉包(覺得閉包就是帶有java中帶有static變數的方法)。
- 變數提升和jsfor迴圈裡面用var宣告的變數屬於for上層容器,而不是屬於for塊內部,es6為了修復這個bug,新增宣告let
- 箭頭函式一種簡化的寫法,如果返回的是類,要加中括號。
- generator函式, 看來java還是有很多沒有的特性的。其他語言還是有很多的很不錯的想法,
- typeof number boolean str nan function undefined 的typeof 的返回值不為object
不要使用new Number()、new Boolean()、new String()建立包裝對 象;
用parseInt()或parseFloat()來轉換任意型別到number;
用String()來轉換任意型別到string,或者直接呼叫某個物件的 toString()方法;
通常不必把任意型別轉換為boolean再判斷,因為可以直接寫if (myVar) {...};
typeof操作符可以判斷出number、boolean、string、function和 undefined;
判斷Array要使用Array.isArray(arr);
判斷null請使用myVar === null;
判斷某個全域性變數是否存在用typeof window.myVar === 'undefined';
函式內部判斷某個變數是否存在用typeof myVar === 'undefined'。 - data
- regexp 正規表示式
- json , json的由來就是js,所以js自帶json解析,還可以利用function對json進行預處理
- js中沒有類,只有原型prototype,js中一切都是物件。這點跟java還是有區別的。建立物件Object.ceate(prototype) 或者 proto屬性(ps 這個屬性在有的瀏覽器中不支援,),js的建構函式既可以是物件的宣告,又可以是函式
- 原型鏈這個東西還真是神奇,感覺這種設計有點然並卵
- 關於箭頭函式請問如果用箭頭函式該怎麼寫?
function Cat(name) {
this.name = name;
}
Cat.prototype.say = () => "Hello, " + this.name + "!"
並不對。。。
不對就對了.MDN this的詞法箭頭函式就是個簡寫形式的函式表示式,並且它擁有詞法作用域的this值(即不會新產生自己作用域下的this, arguments, super 和 new.target 等物件)。此外,箭頭函式總是匿名的。
function Cat(name) {
this.name = name;
}
Cat.prototype.say = () => "Hello, " + this.name + "!"
在箭頭函式裡的this是它外層的this,
外層根本就沒有this,
所以這裡的this是undefined
- js的繼承方式簡直了 , js沒有繼承這個概念,js的繼承好像完全由指標實現的。這裡回來要好好看一哈,理解一下這種設計模式,想想這麼設計的缺點
- haha ,果不其然,es6的新規則把這種複雜的繼承方式對開發者影藏了,使開發者更加專注於業務。(ps 但是不是所有的瀏覽器都支援這種方式,但是也有自動工具將這種轉換自動完成的比如,Babel這個工具。)
- window , screen , navigator , location , decoment ,ps(js真是無所不能跟網頁有關的)
- getElementsByClassName getElementsByTagName ,這兩個方法都可能有多個返回,所以返回結果會被放入陣列當中。
- getElementsByClassName 返回的是子級別的陣列,如果是子tag的子tag的物件的話,一定要在查詢一層。
- getElementsByTagName 可以通過Tag來查詢 比如
<p>a</p>
就可以通過p
來查詢
- 通過querySelector來根據id查詢時。id前面要加上#比如查詢id為
handsome
的element的時候,document.quertSelector('#handsome');
selector要通過selector的語法來,這個可以回來再看。 - innerHTML,innerContent,innerText,style(注意由於js和css的命名規則的問題,css的一些屬性名字要給為駝峰法命名規範比如
font_size
改為fontSize
)。 - appendChild , insertBefore (ps , JavaScript 是一個 已經被定義了的關鍵字,把他當做變數名的時候,可能會出問題)
相關文章
- JavaScript some()JavaScript
- study critical point and saddle point using Hessian Matrix
- some settings for spacemacs golangMacGolang
- Some good websites for C++GoWebC++
- RUST Some None 和OKRustNone
- Some notes about patch workflows
- Some ideas About ‘invisible bug‘Idea
- JS中some、every、map、filterJSFilter
- Some 困難的數論
- some notes about distributed workflows in GitGit
- Cannot dlopen some GPU libraries.GPU
- SampleNet: Differentiable Point Cloud SamplingCloud
- CF685C Optimal Point
- OpenCV(logPolar()、Point2f())OpenCV
- Github錯誤之failed to push some refs toGithubAI
- Swift 5.7 中的 any 和 some (譯)Swift
- 簡述forEach()、map()、filter()、every()、some()的用法Filter
- PostgreSQL DBA(19) - REDO point淺析SQL
- Script of Narrative Writing from different point of viewView
- OpenCV(cv::Point、cv::Rect、cv::Mat)OpenCV
- 不動點迭代(Fixed Point Iteration)
- 什麼是 bootstrap 中的 break pointboot
- Networking from the container's point of view 筆記AIView筆記
- forEach、map、filter、find、sort、some等易錯點整理Filter
- SOA=SOME/IP?你低估了這件事 | 第二彈
- 陣列的forEach,map,filter,reduce,reduceRight,every,some方法陣列Filter
- 軟體定義汽車之SOME/IP介紹
- abc098D Xor Sum 2(two point)
- Battle Point | 海哥說資料大屏BAT
- SAP QM 檢驗點 (Inspection Point) 的使用
- Tekno Point的新CX開發中心揭幕
- Using Geometry to Detect Grasp Poses in 3D Point Clouds3DCloud
- Amazon OA2 K-Nearest Point C++RESTC++
- 點雲分割網路---Point Transformer V3ORM
- 點雲分割網路---Point Transformer V1ORM
- PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation3DSegmentation
- git push報錯error: failed to push some refs to 'git@github.com:ErrorAIGithub
- IDEA Debug框的 show execution point按鈕沒了Idea
- The injection point has the following annotations: - @org.springframework.beans.factory.annotation.SpringFrameworkBean