JavaScipt學習(一)
有關連結:
demo例項,js自定義按鍵,實現GIF動圖的移動:https://blog.csdn.net/weixin_45216092/article/details/102576681;
.NET 5.0 正式版釋出了:https://blog.csdn.net/kebi007/article/details/109616747;
JavaScipt推箱子游戲:https://www.cnblogs.com/vivenZ/p/6818785.html;
12分鐘學會JavaScript:https://www.bilibili.com/video/BV1PE411E7v7;
keycode展示大全:https://www.cnblogs.com/daysme/p/6272570.html;
目標:以推箱子游戲為範例進行學習,認識JS相關關鍵詞和運算子號,實操基礎上熟悉語言邏輯
JavaScript關鍵詞var(variable變數)百度詮釋:
var a=10; //正確
a=10; //正確
在javascript中,以上兩種方法都是定義變數的正確方法。
對待這兩種定義方法要區分以下兩種情況:
⒈在一個過程級中(即位於function的定義範圍內,無論是函式,還是類)的任何地方,包括在一個區塊裡(for,while,if……),定義變數時,使用var定義,則此變數只在這個過程級內起作用,反之為全域性變數。
⒉在過程級外定義變數時,無論是否忽略var,都將定義一個全域性變數。
從這點看來,JS和其他語言有不一樣的地方,變數的範圍不以“{}”作為邊界,而是以"function(){}"為邊界,而且在過程內可以很輕鬆的定義全域性變數。如果不注意這個問題的話,是很容易產生不可預知的錯誤的。
對於使用var,我的建議是要養成好的使用習慣:
⒈在程式的開頭,統一定義全域性變數;
⒉所有的變數在定義時都要加上var;
⒊儘量不要在不同的過程中使用相同的變數名。
var和let區別:
1:作用域不一樣,var是函式作用域,而let是塊作用域,也就是說,在函式內宣告瞭var,整個函7a64e59b9ee7ad9431333431346462數內都是有效的,比如說在for迴圈內定義了一個var變數,實際上其在for迴圈以外也是可以訪問的,而let由於是塊作用域,所以如果在塊作用域內(比如說for迴圈內)定義的變數,在其外面是不可被訪問的,所以let用在for (let i; i < n; i++)是一種很推薦的寫法
2. let不能在定義之前訪問該變數,但是var是可以得。也就是說,let必須是先定義,再使用,而var先使用後宣告也行,只不過直接使用但是沒有卻沒有定義的時候,其值為undefined,這塊要注意,這一塊很容易出問題,這也是個人認為的let比var更好的地方,至於為啥會有這種區別呢,實際上var有一個變數提升的過程。也就是說,當這個函式的作用域被建立的時候,實際上var定義的變數都會被建立,並且如果此時沒有初始化的話,則預設會初始化一個undefined。
3. let不能被重新定義,但是var是可以的。這個呢,我個人認為,從規範化的角度來說,是更推薦的,比如說,你在前面宣告瞭一個變數,後來寫程式碼,因為忘了之前的程式碼邏輯,又宣告瞭一個同名的變數,如果這倆變數邏輯不一樣,並且後面都要用的話,很容易出問題,且不容易維護。
總之呢,let從規範化的角度來說,要比var要進步了很大一步。所以一般情況下的話,推薦用let,const。
(不管你寫的var、let,最終都會被直譯器翻譯為int或string或char或float或double型別,js中,強行你必須使用不定義的變數)
參考:https://zhidao.baidu.com/question/329685205173520085.html
學習程式
(一)keyboard event(鍵盤繫結事件)
對應keycode(鍵盤碼):
程式碼學習案例:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>KeyBoardEvent Demo</title>
</head>
<body>
<div id="div2"> <img id="img1" src="QQ圖片20201102074416.jpg"/> </div>
<script type="text/javascript">
document.onkeydown=function(e){
var keyNum=window.event ? e.keyCode :e.which;
if(keyNum==13)
console.log('您按下了回車');
if(keyNum==32)
console.log('您按下了空格');
}
</script>
</body>
</html>
記事本輸入程式碼,儲存為.html字尾檔案,以Chrome為瀏覽器,F12快捷鍵開啟Chrome的Console,滑鼠放在html網頁本體上,按下回車和回車,檢查程式碼正確性。
三元運算子認識:
以var keyNum=window.event ? e.keyCode :e.which;
//Netscape/Firefox/Opera中不支援 window.event.keyCode,需要用event.which代替
//IE用event.keCode方法獲取當前被按下的鍵盤按鍵值,
//而NetScape/FireFox/Opera用的則是event.which
替換成if else語句:
注意這裡是判定window.event是否存在,存在的話,那就取得e.keyCode的value,不存在的話,則去取得e.which的value,它們取得的keyNum是一個int型變數,這麼做的原因是為了適應瀏覽器的相容。往上document.οnkeydοwn=function(e),這個方法是從document.onkeydown開始的,等於號之後的內容是規定發生document.onkeydown事件後進行的動作document.onkeydown,翻譯一下就是:當你的焦點在HTML整個DOC上的時候,如果發生了onkeydown事件,就是你按了一個鍵,則會觸發你大括號裡面的內容,而第一個判定邏輯是對傳入的引數e進行判斷,傳入的e因為可能不同瀏覽器,所以寫了個小邏輯為了正確的獲取你按下的keycode,獲得之後儲存在你預先定義的keyNum裡面,然後再開始對keyNum進行判斷,當你按下W的時候,也就是keyNum=87的時候,會執行這個if語句為true的邏輯,這裡你寫了內容,那就是console(‘您按下了W‘)。上下左右繫結成WSAD以後,對程式碼進行完善:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>KeyBoardEvent Demo</title>
<style>
#You {
width: 100px;
height: 100px;
position: absolute;
}
#container {
width: 1520px;
height: 500px;
border: 2px solid black;
}
</style>
</head>
<body>
<div id="container"> <img id="You" src="jian ao.jpg"/> </div>
<script type="text/javascript">
document.onkeydown=function(e){
var keyNum=window.event? e.keyCode :e.which;
if(keyNum==87){
console.log('您按下了W');
var character=document.getElementById("You");
character.style.top=character.offsetTop-100+"px";
}
if(keyNum==83){
console.log('您按下了S');
var character=document.getElementById("You");
character.style.top=character.offsetTop+100+"px";
}
if(keyNum==65){
console.log('您按下了A');
var character=document.getElementById("You");
character.style.left=character.offsetLeft-100+"px";
}
if(keyNum==68){
console.log('您按下了D');
var character=document.getElementById("You");
character.style.left=character.offsetLeft+100+"px";
}
}
</script>
</body>
</html>
此程式碼新增了容器牆壁(黑框)與移動邏輯,未加入圖片碰撞邊界邏輯
相關文章
- JavaScipt中作為一等公民的函式Java函式
- 深度學習(一)深度學習學習資料深度學習
- 僅供自己使用的javascipt輔助開發工具Java
- Golang 學習——interface 介面學習(一)Golang
- Flutter學習記錄(一)Dart學習FlutterDart
- kitten 學習教程(一) 學習筆記筆記
- 整合學習(一):簡述整合學習
- Zookeeper學習(一)
- Lucene學習一
- flask學習(一)Flask
- 學習 Swoole(一)
- Html學習一HTML
- thymeleaf學習(一)
- less學習一
- JavaScript學習一JavaScript
- TypeScript 學習(一)TypeScript
- SwiftUI學習(一)SwiftUI
- Vue學習一Vue
- Makefile學習(一)
- mysql學習(一)MySql
- Git 學習一Git
- Drools學習(一)
- canvas學習(一)Canvas
- DWR學習(一)
- OSSEC 學習教程一
- Sphinx Search 學習 (一)
- tcp/ip 學習(一)TCP
- python學習《一》Python
- css套路學習(一)CSS
- java反射學習(一)Java反射
- Loadrunner學習(一)
- 學習筆記(一)筆記
- buu學習之旅(一)
- zookeeper學習之路一
- CGAL庫——學習一
- Python 學習(一)Python
- Mybatis學習之道(一)MyBatis
- pureMVC學習之一REMMVC