2019-06-01 js第八天

01作用域與全局變量

//1. 作用域:

? ? //? ? ? ? 全局作用域 - 整個(gè)頁面都是 范圍浊闪,本質(zhì)上就是 指的 window對(duì)象

? ? //? ? ? ? 局部作用域 - 函數(shù)內(nèi)部的范圍

? ? //2. 全局變量 和 局部變量

? ? //? ? ? ? 全局變量 : 在 全局作用域中 聲明的 變量 就叫 全局變量? -- 函數(shù)外面聲明的變量R撕数冬!

? ? //? ? ? ? ? ? ? ? ? ? 特例:在函數(shù)內(nèi)部 聲明變量時(shí) 如果 不是使用 var關(guān)鍵字岩瘦,那么 也是聲明 全局變量!8蚺啊品山!

? ? //? ? ? ? 局部變量 :? 在 局部作用域中 聲明的 變昂 就叫 局部變量? -- 函數(shù)內(nèi)部聲明的變量!街州!

? ? var a = 110;

? ? function aa() {

? ? ? var b = 120;

? ? ? c = 150; //全局變量: 在函數(shù)內(nèi)部 聲明變量時(shí) 如果 不是使用 var關(guān)鍵字兼丰,那么 也是聲明 全局變量!K艚伞鳍征!

? ? }

? ? aa();

? ? console.log(c);

? ? console.log(window);

? ? // 只有 函數(shù)的 {} 才有局部作用域,其他的 都是 全局作用域

? ? //案例1 :

? ? {

? ? ? var num = 5;

? ? }

? ? console.log(num);//5

? ? //案例2

? ? var num = 5;

? ? if (num > 3) {

? ? ? var sum = 7;

? ? }

? ? console.log(sum); // 7

? ? //案例3?

? ? for (var i = 0; i < 10; i++) {

? ? }

? ? console.log(i); // 10

? ? //案例4 全局變量

? ? var name = "zs";

? ? function f() {

? ? ? // 全局變量 在函數(shù) 內(nèi)部 也能訪問

? ? ? name = "ww";

? ? }

? ? f();

? ? console.log(name); // ww

? ? //案例5? 局部變量

? ? function f() {

? ? ? var name1 = "zs";

? ? }

? ? f();

? ? console.log(name1); // 報(bào)錯(cuò)K霭s〖肌!

02變量的提升

? //

//var num = 10;

// fun();

// function fun(){

// console.log(num);

// var num = 20;

// }

? ? // a-----------------------------------

? ? function fun() {

? ? ? var num; // 局部變量的 聲明部分 被 提到函數(shù)的 最前端

? ? ? console.log(num); // undefined

? ? ? num = 20;

? ? }

? ? var num;

? ? num = 10; // 全局變量

? ? fun();


? ? // b-----------------------------------

? //? var a = 18;

// f1();

// function f1(){

// var b = 9;

// console.log(a);

// console.log(b);

// var a = '123';

// }

? ? function f1() {

? ? ? var a; // 局部變量的 聲明部分 被 提到函數(shù)的 最前端

? ? ? var b; // 局部變量的 聲明部分 被 提到函數(shù)的 最前端

? ? ? b = 9;

? ? ? console.log(a); // undefined

? ? ? console.log(b); // 9

? ? ? a = '123';

? ? }

? ? var a;

? ? a = 18;

? ? f1();

? ? // c-----------------------------------

? ? f1();

? ? console.log(c);//9

? ? console.log(b);//9

? ? console.log(a);//報(bào)錯(cuò)

? ? function f1() {

? ? ? var a = b = c = 9;

? ? ? //var a = 9;

? ? ? //b = 9;

? ? ? //c = 9;

? ? ? console.log(a);//9

? ? ? console.log(b);//9

? ? ? console.log(c);//9

? ? }

03構(gòu)造函數(shù)

//1.創(chuàng)建 空對(duì)象

? ? var obj = {}; //new Object();

? ? //2.創(chuàng)建 帶 初始值 的對(duì)象

? ? // var obj = {

? ? //? name: '小白',

? ? //? age: 18,

? ? //? say:function(){

? ? //? }

? ? // };

? ? //3.為 對(duì)象 動(dòng)態(tài)添加成員(屬性,方法)

? ? obj.name = '我是新增的成員的值';

? ? obj.age = 18;

? ? var obj1 = {

? ? ? name: '我是新增的成員的值'

? ? };

? ? obj1.age = 19;

? ? console.log(obj);

? ? console.log(obj1);

? ? //3.寫一個(gè)構(gòu)造函數(shù)质礼,用來創(chuàng)建 保存 圖書信息 的對(duì)象

? ? //? 包含 三個(gè)屬性(bookName,bookPages,bookPrice) 和 一個(gè)方法(showInfo -- 用來顯示書籍的三個(gè)屬性)

? ? //【構(gòu)造函數(shù)】:存在的目的 就是 為 new關(guān)鍵字 傳入的 空對(duì)象 添加 共同 屬性 和 方法

? ? function BookInfo(bName, bPage, bPrice) {

? ? ? // this 就是 new 關(guān)鍵字調(diào)用 本函數(shù)時(shí) 傳入的 空對(duì)象

? ? ? this.bookName = bName;

? ? ? this.bookPages = bPage;

? ? ? this.bookPrice = bPrice;

? ? ? this.showInfo = function () {

? ? ? ? console.log('我是一本書~~~');

? ? ? }

? ? }

? ? //new 關(guān)鍵字:? a.創(chuàng)建空對(duì)象? var obj = new Object();? --> var obj = { };

? ? //? ? ? ? ? ? ? b.將空對(duì)象 傳給 構(gòu)造函數(shù)里的 this? ? this = obj

? ? //? ? ? ? ? ? ? c.調(diào)用構(gòu)造函數(shù)

? ? //? ? ? ? ? ? ? d.返回第一步創(chuàng)建的對(duì)象? return obj;

? ? var book1 = new BookInfo('進(jìn)化心理學(xué)', 400, 52);

? ? var book2 = new BookInfo('JS高級(jí)編程', 600, 73);

? ? console.log(book1);

? ? console.log(book2);

04關(guān)于this

// this 就是函數(shù)內(nèi)部的一個(gè)特殊 屬性(變量)

? ? //1.寫代碼時(shí)旺聚,腦子里可以這么想: 某個(gè)對(duì)象 方法 里的 this 就是 這個(gè)對(duì)象

? ? //? ? ? ? ? ? ? ? ? ? ? ? ? ? 因?yàn)?要調(diào)用 一個(gè)對(duì)象里的方法時(shí),大部分情況 都是 通過這個(gè) 對(duì)象.方法() 去調(diào)用的

? ? //2.本質(zhì)上說:對(duì)象 方法里的 this眶蕉,就是 : 【誰.出這個(gè)方法砰粹,方法里的this就是誰】

/*? */

? ? //1. 聲明一個(gè) 全局函數(shù) ,可以 共享給 其他對(duì)象使用? ? -------------------------

? ? var showCar =? function () {

? ? ? console.log('我是【' + this.pinPai + '】車~~~');

? ? }

? ? // 2. 兩個(gè)對(duì)象 的 show 方法 共享 一個(gè) 全局函數(shù) showCar---------------------------

? ? var carObj1 = {

? ? ? pinPai: '保時(shí)捷',

? ? ? price: 2000000,

? ? ? owner: 'james',


? ? ? show: showCar // 將 全局函數(shù) showCar 設(shè)置給 carObj1 的 show

? ? };

? ? // carObj1.show();

? ? var carObj2 = {

? ? ? pinPai: '奔馳',

? ? ? price: 1000000,

? ? ? owner: 'james',

? ? ? show: showCar // 將 全局函數(shù) showCar 設(shè)置給 carObj2 的 show

? ? };

? ? // 3. 通過 不同 對(duì)象 調(diào)用 show 方法? -----------------------------

? ? carObj1.show(); // 此刻 方法里的 this 是 carObj1

? ? carObj2.show(); // 此刻 方法里的 this 是 carObj1

05常見api日期對(duì)象

// api? (application program interface)? --> 函數(shù)? ——> 別人寫好的函數(shù)

? ? // 函數(shù) 有是那種叫法:

? ? //? ? ? ? ? ? ? ? ? a.函數(shù) - 寫在 對(duì)象外面的

? ? //? ? ? ? ? ? ? ? ? b.方法 - 寫在 對(duì)象里面的

? ? //? ? ? ? ? ? ? ? ? c.api -? 別人寫的造挽,我們來用

? ? // 日期對(duì)象 Date? ? 碱璃,? ? 數(shù)組對(duì)象 Array? ? ,? 字符串 String

? ? //1. 創(chuàng)建 日期對(duì)象

? ? var dateObj = new Date();

? ? console.log(dateObj);

? ? //2. 格式化 日期顯示

? ? console.log(dateObj.toLocaleString());

? ? //3. 獲取 自定義的 日期格式 --------------------------------

? ? //? 2019年5月31日 9點(diǎn)59分59秒

? ? function getDateTime() {

? ? ? //3.1 獲取年

? ? ? var year = dateObj.getFullYear();

? ? ? console.log(year);

? ? ? //3.2 獲取月份 (0-11)

? ? ? var month = dateObj.getMonth() + 1;

? ? ? console.log(month);

? ? ? //3.3 獲取天

? ? ? // var day = dateObj.getDay(); // 獲取星期幾

? ? ? var day = dateObj.getDate();

? ? ? console.log(day);

? ? ? //3.4 獲取小時(shí)

? ? ? var hour = dateObj.getHours();

? ? ? console.log(hour);

? ? ? //3.5 獲取分鐘

? ? ? var minit = dateObj.getMinutes();

? ? ? console.log(minit);

? ? ? //3.6 獲取秒鐘

? ? ? var second = dateObj.getSeconds();

? ? ? console.log(second);

? ? ? var dateStr = year + '年' + month + '月' + day + '日 ' + hour + '點(diǎn)' + minit + '分' + second + '秒';

? ? ? return dateStr;

? ? }

? ? var strTime = getDateTime();

? ? console.log(strTime);

? ? //3.9 補(bǔ)充 : 獲取 毫秒數(shù) 總數(shù) --- 從 1970年1月1號(hào) 0點(diǎn)0分0秒 到 現(xiàn)在 的 總毫秒數(shù)

? ? var allMillSeconds = dateObj.getTime().toString(); // '1559268784128'

? ? // 將 總毫秒數(shù) 轉(zhuǎn)換回? 正常的 日期時(shí)間 顯示

? ? var date = changeDateFormatWithTime(allMillSeconds);

? ? console.log(date);

? ? function changeDateFormat(cellval) {

? ? ? if (!cellval) return "暫無";

? ? ? var date = new Date(parseInt(cellval.replace("/Date(", "").replace(")/", ""), 10));

? ? ? var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;

? ? ? var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();

? ? ? date.get

? ? ? return date.getFullYear() + "-" + month + "-" + currentDate;

? ? }

? ? function changeDateFormatWithTime(cellval) {

? ? ? if (!cellval) return "暫無";

? ? ? var date = new Date(parseInt(cellval.replace("/Date(", "").replace(")/", ""), 10));

? ? ? var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;

? ? ? var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();

? ? ? var hours = date.getHours() < 10 ? "0" + (date.getHours()) : date.getHours();

? ? ? var minute = date.getMinutes() < 10 ? "0" + (date.getMinutes()) : date.getMinutes();

? ? ? var second = date.getSeconds() < 10 ? "0" + (date.getSeconds()) : date.getSeconds();

? ? ? return date.getFullYear() + "-" + month + "-" + currentDate + " " + hours + ":" + minute + ":" + second;

? ? }

06常見api? 數(shù)組array對(duì)象

// 數(shù)組對(duì)象 -----------------------------------------------

? ? var arrCity = ['P城', 'C城', 'Y城', 'R城', '軍事基地'];

? ? //1.concat 連接 連個(gè)數(shù)組

? ? arrCity = arrCity.concat(['Z城','研究所']);

? ? console.log(arrCity);

? ? //2.join 將元素 拼接成 字符串 返回

? ? var strCitys = arrCity.join('|'); // 傳入的是 分隔符饭入,默認(rèn) 是 ,

? ? console.log(strCitys);

? ? console.log(strCitys.length);

? ? //3.reverse 翻轉(zhuǎn)數(shù)組 -- 直接 對(duì) 本數(shù)組 的元素做翻轉(zhuǎn)操作嵌器,不需要返回值

? ? arrCity.reverse();

? ? console.log(arrCity);

? ? //4.splice 刪除 和 替換 --------------------------------------

? ? var arrCity = ['P城', 'C城', 'Y城', 'R城', '軍事基地'];

? ? //? ? ? ? ? ? ? 0? ? ? 1? ? ? 2? ? ? 3? ? ? 4

? ? console.log(arrCity);

? ? //4.1 刪除 指定元素

? ? arrCity.splice(2,1); // 從 下標(biāo)2 開始刪,刪除 1 個(gè)元素

? ? console.log(arrCity);

? ? // arrCity[1] = 'G港';

? ? //4.2 替換 指定元素

? ? arrCity.splice(1,2,'G港'); // 從下標(biāo)1刪除2個(gè)元素谐丢,并替換一個(gè) G港 到 下標(biāo)1 的位置

? ? console.log(arrCity);


? ? var arrCity = ['P城', 'C城', 'Y城', 'R城', '軍事基地'];

? ? //? ? ? ? ? ? ? 0? ? ? 1? ? ? 2? ? ? 3? ? ? 4

? ? console.log(arrCity);

? ? // 4.3 插入 指定元素

? ? arrCity.splice(2,0,'Z城'); // 在 下標(biāo) 為 2 的元素 前面 插入 一個(gè)元素 Z城

? ? console.log(arrCity);

07常見api;數(shù)組對(duì)象的堆棧方法

//1.push 從尾部 添加數(shù)組元素

? ? arrObj.push('P城');

? ? arrObj.push('R城');

? ? arrObj.push('Z城');

? ? arrObj.push('Y城');

? ? console.log(arrObj);

? ? //2.pop 從 尾部 取出 一個(gè) 元素

? ? var lastEle = arrObj.pop();

? ? console.log(arrObj);

? ? console.log('lastEle = ' + lastEle);

? ? // ----------------------------------------------

? ? //3.unshift 從頭部 添加 一個(gè) 元素

? ? var arrObj2 = [];

? ? arrObj2.unshift('小貓貓');

? ? arrObj2.unshift('小狗狗');

? ? arrObj2.unshift('小牛牛');

? ? console.log(arrObj2);

? ? //4.shift 從頭部 取出 一個(gè) 元素

? ? var firstEle = arrObj2.shift();

? ? console.log(arrObj2);

? ? console.log('firstEle = ' + firstEle);

? ? //5. 【棧 : 先進(jìn)后出】? --- 將 一個(gè) 元素 先 存入數(shù)組爽航,會(huì) 最后一個(gè) 取出來 ----------------------------------

? ? // 5.1 兩種棧的實(shí)現(xiàn)方式:從頭部存,從頭部取? 乾忱;? ? 從 尾部存讥珍,從 尾部取

? ? var arrObj3 =[];

? ? //a.從頭部存,頭部取

? ? arrObj3.unshift('a');

? ? arrObj3.unshift('b');

? ? arrObj3.unshift('c');

? ? console.log(arrObj3);

? ? console.log(arrObj3.shift());

? ? console.log(arrObj3);

? ? console.log(arrObj3.shift());

? ? console.log(arrObj3);

? ? console.log(arrObj3.shift());

? ? console.log(arrObj3);

? ? //5.2 【隊(duì)列實(shí)現(xiàn)方式: 先進(jìn)先出】? -- 將一個(gè)元素 先存入 數(shù)組窄瘟,會(huì) 第一個(gè) 取出來

? ? // 兩種 實(shí)現(xiàn)方案: 從 頭部存衷佃,從尾部取 ;? 從 尾部存蹄葱,從頭部取

? ? //a. 頭部存氏义,從尾部取

? ? var arrObj4 = [];

? ? arrObj4.unshift('a');

? ? arrObj4.unshift('b');

? ? arrObj4.unshift('c');

? ? console.log(arrObj4);

? ? console.log(arrObj4.pop());


? ? console.log(arrObj4);

? ? console.log(arrObj4.pop());


? ? console.log(arrObj4);

? ? console.log(arrObj4.pop());


? ? console.log(arrObj4);

08常見api :字符串對(duì)象的api

? ? var str = '我們都是最棒的 IT學(xué)習(xí)者~~~在前端的路上,一往無前图云,學(xué)無止境~~~';

? ? ? //1.charAt 返回 對(duì)應(yīng) 下標(biāo)的 字符 -------------------------------------

? ? ? var char1 = str.charAt(5);

? ? ? console.log(char1);

? ? ? //2.indexOf 返回 對(duì)應(yīng) 字符的 下標(biāo)觅赊,如果 找不到 字符,就返回 -1 ---------

? ? ? //? ? ? ? ? 注意:如果 有多個(gè) 相同的目標(biāo)字符琼稻,返回 第一個(gè) 匹配字符的 下標(biāo)

? ? ? var index1 = str.indexOf('學(xué)')

? ? ? console.log(index1);

? ? ? //2.2 lastIndexOf 返回 對(duì)應(yīng)的 最后一個(gè) 字符的下標(biāo) ---------------------

? ? ? var index2 = str.lastIndexOf('學(xué)');

? ? ? console.log(index2);

? ? ? //2.3 找 第一個(gè) 出現(xiàn)的 前端 兩個(gè)字的下標(biāo)

? ? ? var index3 = str.indexOf('');

? ? ? console.log(index3);

? ? ? // 思考題:如何 獲取 字符串中 所有 匹配 字符的 下標(biāo)呢?

? ? ? // 關(guān)于 字符串 的 恒定性:字符串一旦創(chuàng)建饶囚,無法直接修改帕翻,只能重新創(chuàng)建一個(gè)新的字符串來覆蓋!

? ? ? //3.concat 連接字符串 -----------------------------------------------

? ? ? var str = '我喜歡你萝风,你不知道嘀掸,但沒關(guān)系~~~我家狗知道~~';

? ? ? // str+='討厭~~~';

? ? ? str = str.concat('討厭','死鬼','不早說~~~');

? ? ? console.log(str);

? ? ? //4. replace() 替換 指定的字符串 -----------------------------------

? ? ? var str = '我喜歡你,你不知道规惰,你喜歡我嗎睬塌? 沒關(guān)系~~~我家狗知道~~';

? ? ? //4.1 默認(rèn) 只能替換 第一個(gè) 匹配的 字符串

? ? ? // str = str.replace('喜歡','討厭');

? ? ? //4.2 如果 要 將 所有匹配的 字符串都替換,需要使用 正則表達(dá)式

? ? ? str = str.replace(/喜歡/g,'討厭');

? ? ? console.log(str);

? ? ? //5.split() 將 字符串? 按照 分隔符 拆成 若干個(gè) 元素,存入 數(shù)組揩晴,并返回 數(shù)組

? ? ? var str = 'i love u , do u love me~~~';

? ? ? var arr = str.split(' ');

? ? ? console.log(arr); // ["i", "love", "u", ",", "do", "u", "love", "me~~~"]

? ? ? //6.substr(index,count)? 從 指定 下標(biāo) 復(fù)制取出 count 個(gè)字符勋陪,并返回

? ? ? var str = 'i love u , do u love me~~~';

? ? ? var word = str.substr(2,4);

? ? ? console.log(str);

? ? ? console.log(word);

? ? ? //7substring(beginIndex,endIndex)? 截取范圍: beginIndex <= x? < endIndex

? ? ? var str = 'i love u , do u love me~~~';

? ? ? var word = str.substring(2,10);

? ? ? console.log(word);

? ? ? //8.toUpperCase() 將 字符串中 所有 英文字母 都轉(zhuǎn)成 大寫

? ? ? var str = 'i love u , do u love me~~~';

? ? ? str = str.toUpperCase();

? ? ? console.log(str);

? ? ? //9.toLowerCase() 將 字符串中 所有 英文字母 都轉(zhuǎn)成 小寫

? ? ? var str = 'I LOVE U , DO U LOVE ME~~~';

? ? ? str = str.toLowerCase();

? ? ? console.log(str);

09常見api綜合練習(xí)

//添加刪除數(shù)組練習(xí)

? ? //練習(xí)1

? ? var arr = ["劉備"];

? ? //添加數(shù)據(jù)后變成:["趙云","馬超","劉備","關(guān)羽","張飛"]

? ? arr.push('關(guān)羽', '張飛');

? ? arr.unshift("趙云", "馬超");

? ? console.log(arr);

? ? //刪除數(shù)據(jù)后變成:["關(guān)羽","張飛"]

? ? //練習(xí)2

? ? var arr = ["趙云", "馬超", "劉備", "關(guān)羽", "張飛"];

? ? //? ? ? ? ? ? 0? ? ? 1? ? ? 2? ? ? 3? ? ? 4? ? length = 5

? ? //把數(shù)組的最后一個(gè)元素變成數(shù)組的第一個(gè)元素

? ? //把數(shù)組的第一個(gè)元素變成數(shù)組的最后一個(gè)元素

? ? var temp = arr[0];

? ? arr[0] = arr[arr.length - 1];

? ? arr[arr.length - 1] = temp;

? ? console.log(arr);

? ? var arr = ["趙云", "馬超", "劉備", "關(guān)羽", "張飛"];

? ? //? ? ? ? ? ? 0? ? ? 1? ? ? 2? ? ? 3? ? ? 4? ? length = 5

? ? //截取["劉備","關(guān)羽"]

? ? // arr.splice(2,2);

? ? //在馬超后面增加 馬騰

? ? // arr.splice(2,0,'馬騰');

? ? //刪除關(guān)羽

? ? arr.splice(3, 1);

? ? console.log(arr);

? ? //1. 截取字符串"我愛中華人民共和國",中的"中華"

? ? var str = '我愛中華人民共和國';

? ? var str1 = str.substr(2, 2);

? ? console.log(str1);

? ? //2. "abcoefoxyozzopp"查找字符串中所有o出現(xiàn)的位置

? ? //? ? 分析:將 所有 o 的 下標(biāo) 都 找到 硫兰,并存入 數(shù)組诅愚,最后打印數(shù)組

? ? var str = 'abcoefoxyozzopp';

? ? //? ? ? ? abc o ef o xy o? z? z? o? pp

? ? //? ? ? ? 012 3 45 6 78 9? 10 11? 12

? ? var arrIndex = [];

? ? do {

? ? ? //2.1 獲取 最后一個(gè) o 的下標(biāo)

? ? ? var lastOIndex = str.lastIndexOf('o');

? ? ? //2.2 判斷 下標(biāo) 是否 > -1,如果大于劫映,說明 找到了 一個(gè) o违孝,如果 不大于-1,說明 已經(jīng)沒有o了

? ? ? if (lastOIndex > -1) {

? ? ? ? //2.3 先將 下標(biāo) 存入 數(shù)組

? ? ? ? arrIndex.push(lastOIndex);

? ? ? ? //2.4 截取新字符串:從下標(biāo)0開始截取 到 o 下標(biāo)的 前一個(gè)位置

? ? ? ? str = str.substring(0, lastOIndex);

? ? ? } else {

? ? ? ? break; //跳出循環(huán)

? ? ? }

? ? } while (true);

? ? console.log(arrIndex);

? ? //3. 把字符串中所有的o替換成!

? ? var str = 'abcoefoxyozzopp';

? ? str = str.replace(/o/g,'!');

? ? console.log(str);

? ? //4. 把一個(gè)字符串中所有的空格全部去掉

? ? var str = 'i love u,but u dont know ~~~';

? ? str = str.replace(/ /g,'');

? ? console.log(str);

? ? //5. 統(tǒng)計(jì)一個(gè)字符串中每個(gè)字符出現(xiàn)的次數(shù) ----------------------

? ? var str = 'abcoao';

? ? //思路分析:

? ? //? ? ? a. 將所有 出現(xiàn)的 字符 單獨(dú)保存泳赋,每種字符 只保存1次

? ? //? ? ? b. 保存 每種 字符 出現(xiàn) 的 次數(shù)

? ? //? ? ? ? { a:2 , b:1 , c:1 , o:2}

? ? var obj = {};

? ? for(var i = 0; i < str.length;i++){

? ? ? //1.取出 字符

? ? ? var charI = str[i];

? ? ? //2.判斷 對(duì)象中 是否 有 與 字符 同名的 屬性

? ? ? if( charI in obj){

? ? ? ? //3.在 同名屬性 上雌桑,累加 次數(shù)

? ? ? ? obj[charI] += 1;

? ? ? }else{

? ? ? ? //4.如果 對(duì)象中 不存在 與 字符 同名的屬性,則 動(dòng)態(tài)添加一個(gè) 祖今,設(shè)置默認(rèn)值為 1

? ? ? ? obj[charI] = 1;

? ? ? ? // obj.a = 1;? -> obj['a'] = 1

? ? ? }

? ? }

? ? console.log(obj);

10前自增和后自增

//前自增 :? var b = ++a , 優(yōu)先于 普通 算數(shù)和賦值運(yùn)算符 執(zhí)行校坑,會(huì) 先 完成 ++操作,再去完成賦值

? ? //后自增:? var b = a++ , 普通算數(shù)和賦值運(yùn)算符 優(yōu)先于 后++衅鹿,會(huì)先完成賦值撒踪,最后再去 完成++操作

? ? // var a = 1;

? ? // a++; // a = a + 1

? ? // console.log(a); // 2

? ? var a = 1;

? ? var b = a++;

? ? // 后++ 實(shí)際執(zhí)行 如下:

? ? // var b = a;

? ? // a = a + 1;

? ? console.log(b); // 1

? ? console.log(a);

? ? // ------------------------------------------

? ? var a = 1;

? ? var b = ++a;

? ? // 前++ 實(shí)際執(zhí)行 如下:

? ? // a = a + 1;

? ? // var b = a;

? ? console.log(b); // 2

? ? console.log(a); // 2

? ? // ---------------------------------------------

? ? var a = 1;

? ? var b = 2;

? ? var c = ++a + b++;

? ? // 前++ 實(shí)際執(zhí)行 如下:

? ? // a = a + 1;

? ? // var c = 2 + b;

? ? // b = b + 1;

? ? console.log(a); // 2

? ? console.log(b); // 3

? ? console.log(c); // 4

11引用類型和值類型

? // 總結(jié):

? ? //? ? 賦值: 不管是 引用類型 還是 值類型 變量 ,相互之間賦值大渤,其實(shí) 是把 椫仆空間里的值 復(fù)制一份 給 另一個(gè)變量

? ? //? ? 傳參: 不管是 引用類型 還是 值類型 傳參,其實(shí) 就是 把 棻萌空間里的 值 復(fù)制一份 給了 形參

? ? //? ? ? 區(qū)別:值類型 椄蹋空間 里保存 的 是 值 本身

? ? //? ? ? ? ? 引用類型 棧空間? 里保存 的是 對(duì)象 的 地址

? ? //1.簡單數(shù)據(jù)類型(值類型): Number, String, Boolean, Undefined, Null

? ? //1.1 值類型 賦值

? ? var age = 18;

? ? var myAge = age;

? ? myAge++;

? ? console.log(age); //18

? ? //1.2 值類型 傳參

? ? function changeNum(num) {

? ? ? num += 100;

? ? }

? ? var age1 = 100;

? ? changeNum(age1);

? ? console.log(age1); // 100

? ? //

? ? console.log('----------------------------------');

? ? //2.復(fù)雜數(shù)據(jù)類型(引用類型):Object , Function , Array , 自定義類型(構(gòu)造函數(shù))

? ? //1.1 引用類型 賦值

? ? var arr = [1, 2];

? ? var arr2 = arr;

? ? arr2[0] = 5;

? ? console.log(arr);

? ? //1.2 引用類型傳參

? ? var arr5 = ['不要再講了', '這不是擴(kuò)展呀'];

? ? function changeEle(arrObj) {

? ? ? arrObj[0] = '學(xué)無止境烫幕,回頭是岸';

? ? }

? ? changeEle(arr5);

? ? console.log(arr5); // ['學(xué)無止境俺抽,回頭是岸', '這不是擴(kuò)展呀'];

? </script>

12js八天的總復(fù)習(xí)

// console.log(undefined == null);

? ? // console.log(undefined === null);

? ? // 顯示類型轉(zhuǎn)換

? ? // 1 轉(zhuǎn)數(shù)值 parseInt()? parseFloat()? Number()

? ? // 2 轉(zhuǎn)字符串? toString()? String()?

? ? // 3 轉(zhuǎn)布爾值 Boolean()

? ? //? ? ? ? ? ? ? ? 轉(zhuǎn)false:0 -0 NaN , '' , null , undefined , false ,document.all

? ? //? ? ? ? ? ? ? ? 轉(zhuǎn)true :其他所有

? ? // 隱式類型轉(zhuǎn)換

? ? var a = 1 + 'a'; // var a= '1' + 'a';? ? var a = '1a';

? ? if (undefined) { // if( Boolean('') )

? ? ? console.log('true');

? ? } else {

? ? ? console.log('false');

? ? }

? ? // if 結(jié)構(gòu)中 ,任何一個(gè)分支條件 滿足较曼,就會(huì) 執(zhí)行 分支代碼磷斧,并 跳出 整個(gè) if結(jié)構(gòu)

? ? if (1 < 2) {

? ? }

? ? if (1 < 2) {

? ? } else {

? ? }

? ? if (1 < 2) {

? ? } else if (2 < 5) {

? ? ? console.log('我是分支代碼');

? ? } else {

? ? }

? ? console.log('我是結(jié)束');

? ? //switch case? 相當(dāng)于 if(變量 === 值)

? ? var age = 11;

? ? switch (age) {

? ? ? case 11: {

? ? ? ? break;

? ? ? }

? ? ? case 12: {

? ? ? ? break;

? ? ? }

? ? ? default: {

? ? ? }

? ? }

? ? aaa();

? ? //三元運(yùn)算符 ? :

? ? var gender = false;

? ? console.log('您的性別是:' + (gender ? '男' : '女'));

? ? function aaa() {

? ? ? console.log('hi~~');

? ? ? console.log('hi~~');

? ? ? console.log('hi~~');

? ? }

? ? //調(diào)試:f11 是 逐句 調(diào)試,遇到函數(shù)捷犹,會(huì)進(jìn)入到函數(shù)內(nèi)部 逐句調(diào)試執(zhí)行

? ? //? ? f10 是 逐段 調(diào)試弛饭,遇到 函數(shù) 不會(huì)進(jìn)入到函數(shù)內(nèi)部 逐句調(diào)試,而是直接一次性執(zhí)行完函數(shù)代碼萍歉,然后調(diào)試 后面的代碼

? ? //求 1-100之間 所有 能被 7 整除的數(shù)

? ? for (var i = 1; i <= 100; i++) {

? ? ? if (i % 7 == 0) {

? ? ? ? console.log(i);

? ? ? }

? ? }

? ? //籮筐思想 求1-100之間素有數(shù)的和 與 平均值

? ? var luoKuang = 0;

? ? for (var i = 1; i <= 100; i++) {

? ? ? luoKuang += i;

? ? }

? ? console.log(luoKuang);

? ? console.log(luoKuang / 100);

? ? //擂臺(tái)思想 求 最大值

? ? var arr = [4, 2, 6, 81, 8, 2, 3];

? ? var leiTai = arr[0];

? ? for (var i = 1; i < arr.length; i++) {

? ? ? if (arr[i] > leiTai) {

? ? ? ? leiTai = arr[i];

? ? ? }

? ? }

? ? console.log('最大值:' + leiTai);

? ? //遍歷數(shù)組

? ? var arr = [4, 2, 6, 81, 8, 2, 3];

? ? //? ? ? ? ? ? ? ? ? ? ? ? ? ? ? length = 7

? ? for (var i = 0; i < arr.length; i++) {

? ? ? console.log(i); // 0 1 2 3 4 5 6

? ? }

? ? console.log(i); // 7

? ? for (var i = arr.length - 1; i >= 0; i--) {

? ? ? console.log(i); // 6 5 4 3 2 1 0

? ? }

? ? console.log(i); // -1

? ? var arr1 = [12, 3, 4];

? ? function aaaaa() {

? ? ? // arguments

? ? ? console.log('我是一個(gè)函數(shù)');

? ? ? // return undefined;

? ? }

? ? console.log(aaaaa());

? ? // 返回多個(gè)值

? ? function sendBack() {

? ? ? console.log('我要返回多個(gè)值~B滤獭!');

? ? ? // return [1,2,3,];

? ? ? return {

? ? ? ? a: 1,

? ? ? ? b: 2

? ? ? };

? ? }

? ? //回調(diào)函數(shù)

? ? function show(func) {

? ? ? func();

? ? }

? ? function bb() {

? ? }

? ? show(bb);

? ? // 對(duì)象的創(chuàng)建

? ? var obj = {

? ? ? name: '小白白'

? ? }; // new Object();

? ? obj.age = 19;

? ? obj.age = 100;

? ? delete obj.age;

? ? // for in 遍歷對(duì)象的屬性名稱

? ? for(var proName in obj){

? ? ? var proValue = obj[proName];

? ? ? console.log(proValue);

? ? }

14字符串的恒定性

? // --------------------------- 恒定性 ---------------------------

? ? var str = '小白';

? ? str += '枪孩,我愛你~~'

? ? // 一共出現(xiàn)了 3個(gè)字符串 的原因憔晒,就是因?yàn)?字符串恒定性:字符串 一旦創(chuàng)建 無法修改藻肄,只能銷毀

? ? // -------------------------------關(guān)于 值類型的 包裝器 -------------------

? ? var age = 1;

? ? // age.toString();

? ? // 當(dāng) 我們 調(diào)用 值類型數(shù)據(jù) 的 各種方法時(shí),js引擎 偷偷幫我們創(chuàng)建了 對(duì)應(yīng)類型的 包裝器 對(duì)象拒担,調(diào)用的 是 包裝器對(duì)象 里的方法

? ? var age1 = new Number(1);

? ? age1.toString()

? ? // var a = new Array();

? ? // 1.1 對(duì)象的字面量 表示法

? ? var obj1 = {

? ? ? name: 'james',

? ? ? age: 1

? ? };

? ? // ----------------------------------json ---------------------------------------------------------------

? ? var obj2 = {

? ? ? 'name': 'james',

? ? ? 'age': 1

? ? };

? ? // 將對(duì)象 轉(zhuǎn)成 json字符串嘹屯,可以 方便 網(wǎng)絡(luò)傳輸,也方便 保存在本地硬盤

? ? var jsonStr = JSON.stringify(obj1);

? ? console.log(jsonStr);

? ? // 將 JSON字符串 轉(zhuǎn)成 對(duì)象 澎蛛,方便調(diào)用訪問

? ? var jsonObj =? JSON.parse(jsonStr);

? ? console.log(jsonObj);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末抚垄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谋逻,更是在濱河造成了極大的恐慌呆馁,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毁兆,死亡現(xiàn)場離奇詭異浙滤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)气堕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門纺腊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茎芭,你說我怎么就攤上這事揖膜。” “怎么了梅桩?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵壹粟,是天一觀的道長。 經(jīng)常有香客問我宿百,道長趁仙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任垦页,我火速辦了婚禮雀费,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘痊焊。我一直安慰自己盏袄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布薄啥。 她就那樣靜靜地躺著貌矿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪罪佳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天黑低,我揣著相機(jī)與錄音赘艳,去河邊找鬼酌毡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蕾管,可吹牛的內(nèi)容都是我干的枷踏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掰曾,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼旭蠕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起旷坦,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤掏熬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后秒梅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旗芬,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年捆蜀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疮丛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辆它,死狀恐怖誊薄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锰茉,我是刑警寧澤呢蔫,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站洞辣,受9級(jí)特大地震影響咐刨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扬霜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一定鸟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧著瓶,春花似錦联予、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至余蟹,卻和暖如春卷胯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背威酒。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國打工窑睁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挺峡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓担钮,卻偏偏與公主長得像橱赠,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子箫津,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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