JavaScript入門(一)

初識JavaScript

JS的組成

  • ECMAScript:主要規(guī)定了js的組成漠魏、引入方式、命名規(guī)范遣钳、輸出方式荐类、變量、數(shù)據(jù)類型蹂随、基本語法十嘿、操作語句
  • DOM: document object model 文檔對象模型(可以識別文檔,操作HTML)
  • BOM: browser object model 瀏覽器對象模型 (就是瀏覽器)

頁面的加載順序

先加載css岳锁,再加載html绩衷,最后加載js,這是一個規(guī)范(習(xí)慣)激率。
js代碼一般在body的后面

JS的引入方式

  • 行內(nèi)式咳燕,和html寫在一行
  • 內(nèi)嵌式,內(nèi)嵌在html結(jié)構(gòu)當中
  • 外鏈式柱搜,引用一個js文件
// 行內(nèi)式
<input type="button" value="按鈕" onclick="alert(1)">
// 內(nèi)嵌式
<script>
  alert(2);
</script>
// 外鏈式
<script src="./demo.js"></script>

JS的注釋

  • 單行注釋是雙斜杠 // 單行注釋
  • 多行注釋是雙斜杠加兩個*號 /* 很多行代碼 */

JS的輸出方式

  • 彈框輸出 alert(1);
  • 在控制臺打印 console.log(123);
  • 在頁面中輸出 document.write("I LOVE CODING");

獲取DOM元素與操作DOM

DOM指的是HTML節(jié)點

  1. 通過id獲取元素 document.getElementById("box");
  2. 修改html標簽中的內(nèi)容
  • innerText: 只可以識別文本迟郎,不識別標簽
    document.getElementById("box").innerText = "<h2>硬件一班</h2>"
  • innerHTML: 可以識別標簽
    document.getElementById("box").innerHTML = "<h2>硬件一班</h2>"

變量

變量: 可變的量,用來存儲值的
變量的作用: 存儲值和代表值
聲明一個變量 使用var聪蘸,意思是 起一個名字

// var 變量名 = 變量值宪肖;  我起了一個名字代表了一個值
// = 就代表賦值
var a = 1;  //  這個 1 是數(shù)字
console.log(a);

變量命名規(guī)范

  1. 在js中嚴格區(qū)分大小寫
    document documenT string sTring

  2. 變量遵循駝峰命名法

  1. 首字母小寫,其余每個有意義的單詞的首字母大寫健爬,盡量不要用拼音
    示例:oDiv studentInfo
  2. 由數(shù)字控乾、 字母、 下劃線娜遵、$ 組成蜕衡,不能使用數(shù)字開頭。
    示例: div1设拟、 _stu慨仿、 pro久脯、 student_info、 abc123
  1. 不能用關(guān)鍵字和保留字
    關(guān)鍵字:在js中有特殊意義 比如 var function
    保留字: 未來可能作為關(guān)鍵字

基本數(shù)據(jù)類型

包含: 數(shù)字number镰吆、字符串string帘撰、布爾值boolean、null万皿、undefined

var a = 12.3;    // 數(shù)字
var b = "123硬件一班_1234";   // 字符串 在引號里面的都是字符串
var n = null;  // 空摧找,空值  現(xiàn)在沒有給值,以后可能會給
var u = undefined;   // 未定義牢硅,壓根就沒有值
var bol = true;    // 布爾值  是
var u;
console.log(u);   // undefined 我們只聲明蹬耘,沒賦值

null 和 undefined

null 是我們沒有給這個變量規(guī)定數(shù)據(jù)類型,所以暫時沒值
我們在電腦中設(shè)置了一個文件减余,但是不知道他是什么類型(文本综苔、視頻、音頻等)的文件位岔,那么就是null
我們壓根和沒定義這個文件休里,那么他是 undefined

數(shù)字、字符串赃承、布爾值簡單運算

// 數(shù)字與數(shù)字之間有 加減乘除
var x = 10;
var y = 20;
console.log( x*y + 1 - 10 );

// 字符串使用加號進行拼接
var str1 = "硬件一班123";
var str2 = "超級強";
console.log(str1 + str2);

// 布爾值有邏輯運算  與 或 非
var t = true;
var f = false;
console.log( t && f);   // false
console.log( t || f);   // true
console.log( !t );    // false
console.log( !f );  // true

邏輯運算符

布爾值: true false
運算:

  1. 與(類似于交集) 符號是: &&
  2. 或(類似于并集) 符號是: ||
  3. 非(取反) 符號是: !
// 與: 全部是 true  結(jié)果是true
console.log(true && true);  // true
console.log(true && false); // false
console.log(false && false); // false

// 或: 有一個是true  結(jié)果是true
console.log(true || true);  // true
console.log(true || false); // true
console.log(false || false);    // false

// !true === false
// !false === true
console.log(!true);     // false
console.log(!false);    // true

var t = true;
var f = false;

// !  取反的操作是優(yōu)先操作的妙黍,其他的從左向右運算
console.log( t && f || f && !t );  // false
console.log( !f || t && t );    // true

基本數(shù)據(jù)類型檢測 typeof

var a = 10;  // 數(shù)字
var b = "hello";    // 字符串
var c = false;  // 布爾值
var d = null;  //  null
var e;   // 如果只聲明,不賦值瞧剖, 那么就是undefined(未定義)

// typeof方法  用來做數(shù)據(jù)類型檢測
// typeof 后面跟上變量名拭嫁, 那么就得到這個變量的類型
// 得到的結(jié)果是一個字符串
console.log(typeof 10);  // number
console.log(typeof "hello");  // string
console.log(typeof false);  // boolean
console.log(typeof null);  // object【在js中是對象的意思,先了解】
console.log(typeof undefined);  // undefined

// typeof "number"  得到的是 "string"
console.log(typeof typeof b);

引用數(shù)據(jù)類型

基本數(shù)據(jù)類型,存儲的就是一個值
引用數(shù)據(jù)類型抓于,存儲的是一個地址空間

引用數(shù)據(jù)類型分為:
1.對象數(shù)據(jù)類型 對象做粤、數(shù)組、正則..
2.函數(shù)數(shù)據(jù)類型 函數(shù)

// 引用數(shù)據(jù)類型捉撮, 又稱復(fù)雜數(shù)據(jù)類型
var arr = [1, 1, 2, "aaa", false];   // 數(shù)組怕品,[值, 值, 值],沒值為[]
var obj = { name: "硬件一班", age: 10 };     // 對象 {屬性名: 屬性值}
var reg = /\d+/;  // 正則【了解】
var fn = function (){}  // 函數(shù)

引用數(shù)據(jù)類型檢測

基本數(shù)據(jù)類型 使用typeof 檢測很方便
引用數(shù)據(jù)類型 檢測有局限性巾遭,不能檢測對象下的細分項

// 接上
console.log(typeof arr);  // object
console.log(typeof obj);  // object
console.log(typeof reg);  // object
console.log(typeof fn);  // function

console.log(Object.prototype.toString.call(arr));  // [object Array]
console.log(Object.prototype.toString.call(obj));  // [object Object]
console.log(Object.prototype.toString.call(reg));  // [object RegExp]
console.log(Object.prototype.toString.call(fn));  // [object Function]

基本操作與運算【練習(xí)】

  // 數(shù)字 number: 正數(shù)肉康、負數(shù)、0灼舍、小數(shù)吼和、 NaN(意思是非數(shù)字)
  // 加減乘除,如果和NaN一起運算骑素,得到的結(jié)果就是NaN
  // 他是其他數(shù)據(jù)類型強制轉(zhuǎn)換成數(shù)字炫乓,沒有成功,得到的結(jié)果
  // NaN: not a number 不是一個有效數(shù)字,但它也是數(shù)字類型
  console.log(2 * 5 + 3); // 13
  console.log(10 + NaN); // NaN
  console.log(typeof NaN);  // number
  console.log(Object.prototype.toString.call(NaN));   // [object Number]

  // 把字符串強制轉(zhuǎn)換成數(shù)字
  console.log(Number("123"));   // 123
  console.log(typeof Number("123"));
  console.log(Number("abc"));   // NaN
  console.log(typeof Number("abc"));

  // 字符串
  // 加法:和字符串一起執(zhí)行加法操作,即使有其他數(shù)據(jù)類型末捣,都會變成字符串拼接
  // 減法:當數(shù)字和純數(shù)字字符串一起做減法操作侠姑,則全部轉(zhuǎn)化為數(shù)字,然后再減
  console.log("--------------");
  console.log("abc" + 1234);  // "abc1234"
  console.log(1 + "10" + true); // "110true"
  console.log(1 + 10 + "a");  // "11a"
  console.log("100" - 20);  // 80
  // "100a" 轉(zhuǎn)化為有效數(shù)字會失敗箩做,變成NaN, NaN - 20 還是NaN
  console.log("100a" - 20); // NaN
  console.log(100 - "20" + "1");  // "801"
  /*
    數(shù)字100減字符串20會做 數(shù)學(xué)運算结借,得到數(shù)字80,加上字符串1卒茬,
    會字符串拼接,得到字符串801,加上NaN咖熟,還是字符串拼接圃酵,得 字符串801NaN
  */
  console.log(100 - "20" + "1" + NaN); // "801NaN"
  /*
    數(shù)字80 減 字符串20,變成數(shù)學(xué)減法馍管,得到數(shù)字79郭赐,
    加NaN依然是數(shù)學(xué)運算,結(jié)果是NaN
    加減乘除确沸,如果和NaN一起數(shù)學(xué)運算捌锭,得到的結(jié)果是NaN
  */
  console.log(100 - "20" - "1" + NaN); // NaN

  // 布爾值
  // 當布爾值做數(shù)學(xué)運算的時候,會轉(zhuǎn)化為數(shù)字
  // true 轉(zhuǎn)化為1罗捎, false 轉(zhuǎn)化為 0
  console.log("-----------------");
  console.log(1 + true);  // 2
  console.log(1 + false); // 1
  console.log(false * 2 - true);  // -1
  console.log(true * 3 + "abc");  // "3abc"

  // 取反: 符號是!  當執(zhí)行取反操作的時候观谦,直接判定布爾值,使用方法Boolean()
  
  // 0 NaN "" null undefined 布爾值是false桨菜,其他均為true 
  // 0 NaN "" null undefined 布爾值是false豁状,其他均為true 
  // 0 NaN "" null undefined 布爾值是false,其他均為true 
  console.log("--------------");
  console.log(!"abc");
  console.log(!!"abc");
  console.log(!!"0");
  console.log(!!0);
  console.log(!!NaN);
  console.log(!!"");
  console.log(!!null);
  console.log(!!undefined);

布爾運算【練習(xí)】

與或運算倒得, 各種數(shù)據(jù)類型都通用

1. 執(zhí)行“或”操作 ||
  • 如果左邊的布爾值為true泻红, 那么留下左邊的值
  • 如果左邊的布爾值為false, 那么留下右邊的值
  • 兩邊有一個true霞掺,結(jié)果布爾值就算true谊路,左邊true,留左邊菩彬,否則留右邊
2. 執(zhí)行“與”操作 &&
  • 如果左邊的布爾值為 true缠劝, 那么留下右邊的值
  • 如果左邊的布爾值為 false, 那么留下左邊的值
  • 兩邊同時true骗灶,結(jié)果布爾值算true剩彬,左邊true,留右邊矿卑,否則留左邊
    console.log( true || false );   // true
    console.log( true && false );   // false

    // 0 NaN "" null undefined 布爾值是false喉恋,其他均為true
    console.log( "abc" || true );   // "abc"
    console.log( "abc" || false );  // "abc"
    console.log( "abc" && true );   // true
    console.log( "abc" && false );  // false

    console.log( 100 && "abc" );    //"abc"
    console.log( 100 || 20 );   // 100
    console.log( 0 || 20 ); //  20
    console.log( 0 && "abc" );  // 0

    console.log( NaN && 20);    // NaN
    console.log( false || 100); // 100

等號比較【練習(xí)】

JS中有隱性數(shù)據(jù)類型轉(zhuǎn)換,這個轉(zhuǎn)換使得js的語法顯得不是很嚴謹(弱類型語言)
java dart 強類型語言
一個等號"="是賦值操作, "==" 是先做轉(zhuǎn)換再比較轻黑, "==="必須類型與值完全一致才相等

console.log("1" === 1); // false
console.log("1" == 1);  // true

// 字符串  ——> 數(shù)字  使用 Number()
// 其他類型  ——> 布爾值  使用 Boolean()

// 一邊是字符串糊肤,一邊是數(shù)字,則全部轉(zhuǎn)化為數(shù)字再比較
console.log("-------------------");
console.log( "100" == 100 );   // true
console.log( "110" == 100 + 10 );   // true
console.log( "abc100" == 100 ); // NaN == 100   false
console.log( "-1" == -1 );  // true
console.log( "" == 0 ); // true
console.log( "10" == 10.0 );    // true

// 一邊是字符串氓鄙,一邊是布爾值
// 字符串變數(shù)字馆揉, 布爾值變數(shù)字,然后再比較
// true 轉(zhuǎn)數(shù)字是1抖拦,  false 轉(zhuǎn)數(shù)字是0
console.log("-------------------");
console.log( "123" == true );   // 123 == 1  false
console.log( "1" == true ); // 1 == 1  true
console.log( "" == false ); // 0 == 0  true

// 如果遇到取反操作升酣,則直接判斷布爾值
// false有5個: 0 NaN "" null undefined
console.log("-------------------");
console.log( !"a" == false );   // true
console.log( !"" == true ); // true
console.log( !NaN == false );   // false
console.log( !"abc" == !100 );  // false == false   true
console.log( !1 == true );  // false
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市态罪,隨后出現(xiàn)的幾起案子噩茄,更是在濱河造成了極大的恐慌,老刑警劉巖复颈,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绩聘,死亡現(xiàn)場離奇詭異,居然都是意外死亡耗啦,警方通過查閱死者的電腦和手機凿菩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帜讲,“玉大人衅谷,你說我怎么就攤上這事∷平” “怎么了会喝?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長玩郊。 經(jīng)常有香客問我肢执,道長,這世上最難降的妖魔是什么译红? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任预茄,我火速辦了婚禮,結(jié)果婚禮上侦厚,老公的妹妹穿的比我還像新娘耻陕。我一直安慰自己,他們只是感情好刨沦,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布诗宣。 她就那樣靜靜地躺著,像睡著了一般想诅。 火紅的嫁衣襯著肌膚如雪召庞。 梳的紋絲不亂的頭發(fā)上岛心,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機與錄音篮灼,去河邊找鬼忘古。 笑死,一個胖子當著我的面吹牛诅诱,可吹牛的內(nèi)容都是我干的髓堪。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼娘荡,長吁一口氣:“原來是場噩夢啊……” “哼干旁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起炮沐,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤争群,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后央拖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡鹉戚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年鲜戒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抹凳。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡遏餐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赢底,到底是詐尸還是另有隱情失都,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布幸冻,位于F島的核電站粹庞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏洽损。R本人自食惡果不足惜庞溜,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碑定。 院中可真熱鬧流码,春花似錦、人聲如沸延刘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碘赖。三九已至驾荣,卻和暖如春外构,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秘车。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工典勇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人叮趴。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓割笙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親眯亦。 傳聞我的和親對象是個殘疾皇子伤溉,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容

  • JS入門 一、JavaScript發(fā)展簡史 JavaScript一種直譯式腳本語言妻率,是一種動態(tài)類型乱顾、弱類型、基于原...
    我不信這樣也重名閱讀 859評論 0 0
  • 詞法結(jié)構(gòu) 字符集:unicode 區(qū)分大小寫宫静,關(guān)鍵字走净、變量、函數(shù)名孤里、標示符必須采取大小寫一致 注釋// 單行注釋/...
    zhaolion閱讀 2,486評論 15 36
  • 寫在前面 本文是我通過在網(wǎng)易云課堂上學(xué)習(xí) 葉建華 老師的 撩課-零基礎(chǔ)玩轉(zhuǎn)JavaScript 視頻教程伏伯,整理、精...
    David_Rao閱讀 423評論 0 5
  • 總結(jié)學(xué)過的JavaScript 入門 js是什么?js即javascript捌袜,它是一種輕量級的腳本語言说搅。運行在瀏覽...
    一只小丫丫閱讀 207評論 0 1
  • 本文是大神廖雪峰的JavaScript教程學(xué)習(xí)筆記。并不是教程虏等,如有需要弄唧,請前往廖雪峰大神大博客. 一、數(shù)據(jù)類型和...
    0o凍僵的企鵝o0閱讀 444評論 0 4