成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS基礎(chǔ)知識學(xué)習(xí)(一)

xinhaip / 468人閱讀

摘要:基礎(chǔ)知識前端開發(fā)常用的瀏覽器谷歌瀏覽器內(nèi)核引擎火狐瀏覽器內(nèi)核歐朋瀏覽器內(nèi)核瀏覽器內(nèi)核瀏覽器內(nèi)核作為前端開發(fā),我們會使用編寫代碼,編寫代碼的時候要遵循一些規(guī)范瀏覽器開發(fā)商開發(fā)的瀏覽器,目的就是為了按照的規(guī)范,識別出開發(fā)者編寫的代碼,并且在頁面

JS基礎(chǔ)知識 前端開發(fā)常用的瀏覽器

谷歌瀏覽器(chrome):Webkit內(nèi)核(v8引擎)

火狐瀏覽器(firefox):Gecko內(nèi)核

歐朋瀏覽器(opera):Presto內(nèi)核

IE瀏覽器:Trident內(nèi)核

瀏覽器內(nèi)核

作為前端開發(fā),我們會使用HTML/CSS/JS編寫代碼,編寫代碼的時候要遵循一些規(guī)范(W3C)

瀏覽器開發(fā)商開發(fā)的瀏覽器,目的就是為了按照W3C的規(guī)范,識別出開發(fā)者編寫的代碼,并且在頁面中繪制出開發(fā)者預(yù)想的頁面和效果(GPU:顯卡),我們把瀏覽器中識別代碼繪制頁面的東西稱為瀏覽器的內(nèi)核和渲染引擎。

JS的引入方式:

行內(nèi)式

嵌入式

外鏈?zhǔn)?/p>

JS中常用的輸出方式
js中提供的瀏覽器彈框

1、alert:在瀏覽器中彈出一個提示框(提供確定按鈕,點(diǎn)擊確定彈框消失);使用alert彈框提示信息,提示的內(nèi)容最后都會被轉(zhuǎn)換為字符串輸出(調(diào)用了toString這個方法)

alert({name:"candy"});//=>"[object object]"
alert([12,13]);//=>"12,13"
alert(1+1);//=>"2"

2、confirm:在alert基礎(chǔ)上增加了讓用戶選擇性的操作,(提供兩個按鈕:確定和取消)。當(dāng)用戶點(diǎn)擊的是確定按鈕的時候我們接收的是true,當(dāng)用戶點(diǎn)擊的是取消按鈕的時候我們接收的是false,此后我們可以根據(jù)接收的結(jié)果做不同的處理即可

3、prompt:在confirm上的基礎(chǔ)上增加了讓用戶輸入的效果;用戶點(diǎn)擊取消按鈕我們獲取到的結(jié)果是null;如果用戶點(diǎn)擊的是確定按鈕,我們將會獲取到用戶輸入的內(nèi)容(如果用戶沒有輸入任何內(nèi)容我們獲取的結(jié)果是空字符串)

:真實項目中,尤其是需要樣式精美的網(wǎng)站中,我們的提示框一般都是自己封裝插件和組件來實現(xiàn),不會用內(nèi)置的(使用原生JS封裝模態(tài)框組件)

控制臺輸出

方便開發(fā)員進(jìn)行調(diào)試的;F12(FN+12)打開瀏覽器的控制臺

console.log :在控制臺輸出,優(yōu)勢不會轉(zhuǎn)換數(shù)據(jù)類型,輸出什么格式的數(shù)據(jù)都可以

console.dir:比LOG輸出的更加詳細(xì)一些

console,table:把JSON數(shù)據(jù)展示稱為一個表格

...

JavaScript
ECMAScript(ES):規(guī)定了js的一些基礎(chǔ)核心的知識(變量、數(shù)據(jù)類型、語法規(guī)范、操作語句等)

DOM:document object model 文檔對象模型,里面提供了一些屬性和方法,可以讓我們操作頁面中的元素

BOM:browser object model 瀏覽器對象模型,里面提供了一些屬性和方法,可以讓我們操作瀏覽器

變量和常量
變量:值是可以變的

常量:值是不可變得

//=>JS中定義變量的方式
//var 變量名 = 值;(ES6中定義變量使用let)
var num=12;
var str="candy";

//=>JAVA等后臺語言定義變量比較嚴(yán)謹(jǐn),JS比較松散
//int num=12;
//float num=12.5;
//double num=3.1415926;

console.log(num);//=>12 變量其實只是一個無意義的名字 它所代表的意義都是其存儲的那個值

num=13;//=>讓原有的num變量存儲的值修改為13(變量只能代表一個值)
//=>任何一個具體的數(shù)據(jù)值都是常量,例如12就是一個常量

//=>和變量類似,我們設(shè)置一個常量(也是一個名字),給其存儲一個值,但是這個存儲的值不能修改
const num=12;//=>定義一個常量num,給他存儲了12(const是ES6新增的)
num=13;//=>Uncaught TypeError: Assignment to constant variable.常量存儲的值是不能修改的。
JS中的命名規(guī)范

1、JS中嚴(yán)格區(qū)分大小寫

var text="candy";
var Text="daisy";
console.log(text);//=>"candy" text和Text是兩個變量

2、遵循國際命名規(guī)則 駝峰命名法

第一個單詞首字母小寫,其余每一個有意的單詞首字母大寫
var studentInfo;

//命名使用英文單詞,不要使用拼音
//不是所有單詞都能簡寫,我們需要保證大家看到名字后知道所代表的意思

/***

info:information 信息
init:initialization 初始化
add/insert/creat:增加創(chuàng)建插入
remove/rm/clear/del/delete:刪除
update:修改
get/query/select:查詢獲取

***/

3、命名的時候可以使用$、_ 、數(shù)字 、字母,但是數(shù)組不能作為名字的第一位

var student_info;
var $xxx;//=>一般都是應(yīng)用JQ獲取到的值
var _xxx;//=>一般這樣的情況代表變量是一個全局或者公用的變量

4、JS中很多的詞都是有特殊含義的,我們管這些詞叫做關(guān)鍵字;現(xiàn)在沒有特殊含義,以后可能會作為關(guān)鍵詞的,我們叫做保留字;而關(guān)鍵字和保留字都不可以隨便用來命名

JS中的數(shù)據(jù)類型

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

number:數(shù)字

string:字符串

boolean:布爾

null:空對象指針

undefined:未定義

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

object對象數(shù)據(jù)類型

{}普通對象

[]數(shù)組

/^$/正則

...

function 函數(shù)數(shù)據(jù)類型

12 12.5 -12.5 0
"candy" "daisy"=>單雙引號包裹起來的都是字符串(單雙引號沒有區(qū)別)
true false=>布爾類型:只有兩個值
null 
undefined

{name:"candy",age"28"}
[12,23,34]
/^-?(d|([1-9]d+))(.d+)?$/
function fn(){}              

這么多數(shù)據(jù)類型JS如何的去檢測呢?

typeof :檢測數(shù)據(jù)類型的運(yùn)算符

instanceof :檢測某個實例的構(gòu)造器

constructor:獲取當(dāng)前實例的構(gòu)造器

Object.prototype.toString.call:獲取當(dāng)前實例的所有類信息

typeof

使用typeof檢測返回的是一個字符串,字符串中包含的內(nèi)容證明了值是屬于什么類型的

[局限性]

1、typeof null不是“null”而是object:因為null雖讓是多帶帶的一個數(shù)據(jù)類型,但是它原本的意思是空對象指針,瀏覽器使用typeof檢測的時候會把他按照對象來檢測

2、使用typeof 無法具體細(xì)分出到底是數(shù)組還是正則,因為返回的結(jié)果都是”object“

typeof 12;//=>"number"
var num=13;
typeof num;//=>"number"

騰訊的面試題:

console.log(typeof typeof []);//=>"string"
布爾

Boolean

把其它數(shù)據(jù)類型的值轉(zhuǎn)換為布爾值

只有0、NaN、空字符串、null、undefind這五個數(shù)據(jù)轉(zhuǎn)換為布爾類型的false,其余都會變?yōu)閠rue

!

!=:不等于

嘆號在js中還有一個作用:取反,先把值轉(zhuǎn)換為布爾類型,然后在去取反

!!

在一個嘆號取反的基礎(chǔ)上在取反,取兩次反相當(dāng)于沒有做操作,但是卻已經(jīng)把其他類型值轉(zhuǎn)換為布爾類型了,和Boolean是相同的效果
字符串
在JS中單引號和雙引號包起來的都是字符串
12->number
"12"->string
"[12,13]"->string

常用方法:

charAt charCodeAt

substr substring slice

toUpperCase toLowerCase

indexOf lastIndexof

split

replace

match

...

number數(shù)字
JS中多增加了一個number類型的數(shù)據(jù)NaN

typeof NaN ->"number"

NaN

not a number:不是一個數(shù),但是屬于number類型

NaN==NaN:false,NaN和任何其它值都不相等

isNaN()

用來檢測當(dāng)前這個值是否是非有效數(shù)字,如果不是有效數(shù)字檢測的結(jié)果是true,反之是有效數(shù)字則為false
isNaN(0);//->false
isNaN(NaN);//->true
isNaN("12");//->false 當(dāng)我們使用isNaN檢測值的時候,檢測的值不是number類型的,瀏覽器會默認(rèn)的把值先轉(zhuǎn)換為number類型,然后再去檢測

isNaN([]);//false 先運(yùn)行Number()方法把[]轉(zhuǎn)換成0 然后在判斷isNaN,零為有效數(shù)字,所以是false

Number()

把其它數(shù)據(jù)類型值轉(zhuǎn)化為number類型的值
Number("12");//=>12
Number("12px");//=>NaN 在使用Number轉(zhuǎn)換的時候只要字符串中出現(xiàn)任何一個非有效數(shù)字字符,最后的結(jié)果都是NaN
Number(true);//=>1
Number(false);//=>0

Number(null);//=>0
Number(undefined);//=>NaN

Number([]);//=>0 把引用數(shù)據(jù)類型轉(zhuǎn)換為number,首先需要把引用數(shù)據(jù)類型轉(zhuǎn)為字符串(toString),再把number即可 例如[]=>"" ""=>0
Number([12]);//=>[12]=>"12" "12"=>12
Number([12,13]);//=>[12,13]=>"12,23"=>NaN
Number({name:"candy"})//=>NaN
Number({});//=>NaN

parseInt

也是把其他數(shù)據(jù)類型值轉(zhuǎn)換為number,和Number方法在處理字符串的時候有所區(qū)別
Number("12px");//=>NaN
parseInt("12px");//=>12
parseInt("12px13");//=>12 提取規(guī)則:從左到右一次查找有效數(shù)字字符,直到遇見非有效數(shù)字字符為止(不管后面是否還有,都不找了),把找到的轉(zhuǎn)換為數(shù)字
parseInt("px12");//=>NaN

parseFloat

在parseInt的基礎(chǔ)上可以識別小數(shù)點(diǎn)
parseInt("12.5px")->12
parseFloat("12.5px")->12.5

擴(kuò)展思考:parseInt常用的只需要傳遞一個值做參數(shù)即可,但是它支持多個參數(shù),回去后擴(kuò)展其它參數(shù)的意思

parseInt(string,radix)
null和undefined
null:空,沒有

undefined :未定義

”“:空字符串沒有

0:也可以理解為沒有

空字符串和null的區(qū)別

比喻:都是去種樹

空字符串屬于挖了個坑,但是沒有任何東西

null是連坑都沒挖

空字符串相對null來說開辟了內(nèi)存

null和undefined的區(qū)別

null一般都是暫時沒有,預(yù)期中以后會有的(可能以后也沒有達(dá)到預(yù)期):在Js中null一般都是手動先賦值為null,后期我們在給其賦具體值

undefined:完全沒有預(yù)料之內(nèi)的

對象數(shù)據(jù)類型object
var obj={name:"candy",age:"28"}

每一個對象都是由零到多組屬性名:屬性值(value值)組成的,或者說由多組鍵值對組成的,每組鍵值對中間用逗號分隔

屬性:描述這個對象特點(diǎn)特征的

對象的屬性名是字符串或者數(shù)字格式的,存儲的屬性值可以是任何的數(shù)據(jù)類型

對象名.屬性名:忽略了屬性名的單雙引號

對象名[屬性名]:不能忽略單雙引號

var obj={name:"candy",age:"28",otherName:["daisy","lily"]};
//=>獲取某個屬性名對應(yīng)的屬性值
obj.name
obj.["name"]
//->如果屬性名是數(shù)字如何操作
obj.0 //語法不支持
//obj[0]/ obj["0"] //兩種都可以支持
//如果操作的屬性名在對象中不存在,獲取的結(jié)果是undefined
obj.sex//->undefined

//=>設(shè)置/修改:一個對象的屬性名是不能重復(fù)的(唯一性),如果之前存在就是修改屬性操作值的操作,反之不存在就是新設(shè)置屬性的操作
obj.sex="男";
obj["age"]=9;

//=> 刪除
//=>假刪除:讓其屬性值賦值為null,但是屬性還在對象中
obj.sex=null;
//=>真刪除:把整個屬性都在對象中暴力移除
delete obj.sex;

思考題:obj[age]和obj["age"]有什么樣的區(qū)別?

var obj={name:"candy",age:28};
var age="name";
obj[age];//=>obj[age變量]=>obj["name"]=>獲取name屬性名的屬性值=>candy
obj["age"];//=>28
//age:變量名,代表的是它存儲的值
//"age":常量,字符串的具體值。
//obg[age]操作的是對象中的屬性,并不是操作的變量,所以是操作變量所存儲的值,也就相當(dāng)于obj["name"],而obj["age"]就是操作的obj對象中的age屬性,所以值就是age本身。
基本數(shù)據(jù)類型和引用數(shù)據(jù)類型的區(qū)別
js是運(yùn)行在瀏覽器中的(內(nèi)核引擎),瀏覽器會為js提供賴以生存的環(huán)境(提供給js代碼執(zhí)行的環(huán)境)=>全局作用域window(global)
var a=12;
var b=a;//=>把a(bǔ)變量存儲的值賦值給b
b=13;
console.log(a);

var n={name:"candy"};
var m=n;
m.name="daisy";
console.log(n.name);

基本數(shù)據(jù)類型是按值操作的:基本數(shù)據(jù)類型在賦值的時候,是直接把值賦值給變量即可;

引用數(shù)據(jù)類型是按照空間地址(引用地址)來操作的

var n={name:"candy"}

1、先創(chuàng)建一個變量n

2、瀏覽器首先會開辟一個新的存儲空間(內(nèi)存空間),目的是把對象中需要存儲的內(nèi)容(鍵值對)分別的存儲在這個空間中,為了方便后期找到這個空間,瀏覽器給空間設(shè)定了一個地址(16進(jìn)制的)

3、把空間的地址賦值給了變量

函數(shù)數(shù)據(jù)類型
函數(shù)數(shù)據(jù)類型也是按照引用地址來操作的

函數(shù):具備一定功能的方法

//=>創(chuàng)建函數(shù):相當(dāng)于生產(chǎn)了一臺洗衣機(jī)
function  函數(shù)名(){
    //=>函數(shù)體:實現(xiàn)某一個功能的具體js代碼
}
//=>執(zhí)行函數(shù):相當(dāng)于使用洗衣機(jī)洗衣服(如果函數(shù)值創(chuàng)建了但是沒有執(zhí)行,函數(shù)沒有任何意義)
函數(shù)名();
function fn(){
    console.log(1+1);
}
fn;//=>輸出函數(shù)本身
fn();//2 =>把函數(shù)執(zhí)行(把函數(shù)體中實現(xiàn)功能的代碼執(zhí)行)

//=>形參:形式參數(shù)(變量),函數(shù)的入口
//當(dāng)我們創(chuàng)建一個函數(shù)想要實現(xiàn)某個功能的時候,發(fā)現(xiàn)有一些材料并不清楚,只有當(dāng)函數(shù)運(yùn)行的時候,別人傳遞給我,我才知道,此時我們就需要設(shè)定入口,讓用戶執(zhí)行的時候通過入口把值給我們。
function fn(a,b){
    console.log(a+b);
}
//=>實參:函數(shù)執(zhí)行傳遞給函數(shù)的具體值就是實參
fn(3,2);
fn(4,3);
判斷操作語句

if、else if、else

if(條件1){
    //=>條件1成立執(zhí)行的操作
}else if(條件2){
    //=>上面條件不成立,條件2成立,執(zhí)行的操作
}
...
else{
    //=>以上條件都不成立執(zhí)行的操作
}
//如果好幾個條件都成立了,只把第一個成立的條件執(zhí)行,后天成立的條件忽略不管
/***
條件:A==B、A!=B、A>=B、A先把A轉(zhuǎn)換為布爾類型,判斷真假以此來判定條件是否成立
if(A>B && AB || A

BAT面試題:

var num=parseFloat("width:12.5px");//NaN
if(num==12.5){
    alert(12.5);
}else if(num==NaN){//NaN!=NaN
    alert(NaN);
}else if(typeof num=="number"){//=>typeof NaN->"number"
    alert(0);//=>"0";
}else{
    alert("啥也不是");
}

三元運(yùn)算符

條件?條件成立執(zhí)行:條件不成立執(zhí)行

if(條件){}else{}:三元運(yùn)算符就是這種簡單if、else的另外一種寫法

if(num>5 && num<=10){
    num++; //num+=1 num=num+1 自身累加1
}else{
    num--;
}
//=>改寫成三元運(yùn)算符
num>5 && num<=10?num++:num--;
var num=10;
if(num>5 && num<=10){
    num++; //num+=1 num=num+1 自身累加1
}
//=>改寫成三元運(yùn)算符:如果條件成立或者不成立的某一種情況并不需要做什么處理,我們空著語法不符合,我們使用null、undefined、void 0(就是undefined)占位即可
num>5 && num<=10?num++:null;
var num=10;
if(num>5 && num<=10){
    num++; //num+=1 num=num+1 自身累加1
    console.log(num);
}
//=>改寫成三元運(yùn)算符:某一種情況執(zhí)行多條操作,使用小括號包起來,中間用逗號分隔
num>5 && num<=10?(num++,console.log(num)):null;
var num=10;
if(num>5 && num<=10){
    num++; 
    break;//continue;/return;
}
//=>改寫成三元運(yùn)算符:在三元運(yùn)算符的操作中不能出現(xiàn)break,continue,return 這些關(guān)鍵詞,我們無法用三元運(yùn)算符代替if、else
num>5 && num<=10?(num++,return):null;
//=>Uncaught SyntaxError :語法錯誤
var num=0;
num>0?(num<10?num++:num--):(num>-10?num+=2:num-=2);

//=>改寫成if else
if(num>0){
    if(num<10){
        num++;
    }else{
        num--;
    }
}else{
    if(num>-10){
        num+=2;
    }else{
        num-=2;
    }
}
switch case
switch case 引用于if、else中一個變量在不同值情況下的不同操作
var num=10;
switch(num){//=>switch后面小括號中存放的是一個值(一般我們都寫變量:把變量存儲的值拿來用,有時候也可能是一個計算)
    case 1:
        ...
        break;
    case 10://=>case后面放入的都是值,目的是驗證switch后面的值和哪一種case后面的值相等,相等的進(jìn)行對應(yīng)的處理
        ...
        break;//=>每一種case結(jié)束后都要加break,結(jié)束當(dāng)前的判斷
    default://=>switch后面的值和每一種case情況對應(yīng)的值都不相等,執(zhí)行最后的default,類似于else
        ...

案例分析

var num=5;
switch(num%2){//=>想把取余操作進(jìn)行運(yùn)算,那運(yùn)算結(jié)果和case比較
    case 1:
        num++;
        break;
    case 2-1://=>case后面也應(yīng)該是值,此處先把2-1計算,把計算的結(jié)果和switch值比較
        num--;
        //=>最后一項可以不加break,不加也能跳出判斷
}
//num%2:讓num存儲的值除以2取余數(shù)(0或者1)
var num=5;
switch(num%3){
    case 0:
        num++;//=>不加break,不管后面的條件是否成立,都會繼續(xù)向下執(zhí)行,直到遇到break為止
    case 1:
        num--;
        break;
    default:
        num=0;
}
//=>小應(yīng)用:把符合某幾項值都去做同一件事情,使用不加break來實現(xiàn)
switch(num%3){
    case 0:
    case 1://=>余數(shù)是0或1都執(zhí)行減減的操作
        num--;
        break;
    default:
        num=0;
}
var num="6";
switch(num){
    case 0:
        num++;
        break;
    case 6:
        num--;
        break;
    default:
        num=0;
}
//=>num=0;
//switch case 中的比較使用的是:===(全等)
/***
=:賦值,等號左邊是變量,右邊是值
==:比較,如果左右兩邊值的類型不一樣,瀏覽器會默認(rèn)轉(zhuǎn)換為一樣的然后在進(jìn)行比較
===:絕對相等,不僅要求值一樣,并且類型也完全一樣
***/
循環(huán)操作語句
循環(huán):重復(fù)做一件事情

for循環(huán)

for(設(shè)置循環(huán)起始值;設(shè)置循環(huán)執(zhí)行的條件;步長累加){
    //=>循環(huán)體:重復(fù)做的事情都在循環(huán)體中
}

案例剖析

//1、設(shè)置初始值
//2、驗證條件
//3、條件成立,執(zhí)行循環(huán)體;不成立,循環(huán)結(jié)束
//4、步長累加
for(var i=0;i<5;i++){
    console.log(i);//=>1 2 3 4
}
console.log(i);//5
var i=0;
for(;i<5;){
    console.log(i);
}
console.log(i);//=>=>沒有步長累加,我們的i永遠(yuǎn)是0,循環(huán)條件永遠(yuǎn)成立"死循環(huán)":項目中不能出現(xiàn)死循環(huán),一旦出現(xiàn),循環(huán)下面的事情都做不了
var i=0;
for(;i<5;i+=2){
    console.log(i);//0 2 4
}
console.log(i)//6
for(var i=0;i<5;i+=2){
    console.log(i);
    continue;//=>結(jié)束本輪循環(huán),繼續(xù)執(zhí)行下一輪:循環(huán)體中continue后面的代碼都不會再執(zhí)行,他會直接的去執(zhí)行步長,然后進(jìn)入到下一輪
    ...
}
console.log(i)//6
for(var i=0;i<5;i+=2){
    console.log(i);
    break;//=>結(jié)束整個循環(huán):循環(huán)體中一旦遇到break,首先后面的代碼不執(zhí)行了,而且步長累加也不執(zhí)行了,循環(huán)都結(jié)束了
    ...
}
console.log(i)//=>0

BAT面試題:

for(var i=1;i<10;i+=2){
    if(i<5){
        i++;//2 5
        continue;
    }else{
        i+=3;//9
        break;
    }
    console.log(i);
}
console.log(i);//10
//輸出1次 值為10

for in循環(huán)

//=>for in:用來遍歷(循環(huán))對象鍵值對的
var obj={name:"candy",age:"28",1:"daisy",2:"lily",3:"candice",2.5:"呵呵"};
//=>var key; var attr(attribute);
//=>默認(rèn)情況下對象中有多少組鍵值對,我們的FOR IN循環(huán)就遍歷多少次(不一定)
//=>每一次循環(huán)KEY這個變量存儲的都是當(dāng)前循環(huán)這組鍵值對的屬性名
//1、KEY存儲的值都是字符串格式的(不管屬性名是否為數(shù)字)
//2、在FOR IN循環(huán)遍歷的時候,大部分瀏覽器都是先把對象中的鍵值對進(jìn)行排序(把數(shù)字屬性名的排在前面,并且排列的時候按照數(shù)字由小到大排了),其次在把非數(shù)字的屬性名按照之前編寫的順序排列,循環(huán)的時候按照重新排列的順序依次遍歷(小數(shù)算作字母不算做數(shù)字)
for(var key in obj){
    console.log(typeof key);//=>"string"
    //key->屬性名 "name"/"age"...
    console.log(obj.key);//->undefined 獲取obj中key這個屬性對應(yīng)的屬性值 <=>obj["key"]
    console.log(obj[key]);//=>每一次循環(huán)吧key變量存儲的值(當(dāng)前遍歷的屬性名)獲取到放在中括號中,獲取obj中對應(yīng)屬性的屬性值
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/95687.html

相關(guān)文章

  • 堅持:學(xué)習(xí)Java后臺的第階段,我學(xué)習(xí)了那些知識

    摘要:最近的計劃是業(yè)余時間學(xué)習(xí)后臺方面的知識,發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺很遙遠(yuǎn)。為了快速進(jìn)入后臺的開發(fā),我也要加快腳步了 showImg(https://segmentfault.com/img/remote/1460000016070790?w=899&h=499); 最近的計劃是業(yè)余時間學(xué)習(xí)Java后臺方面的知識,發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺...

    instein 評論0 收藏0
  • 堅持:學(xué)習(xí)Java后臺的第階段,我學(xué)習(xí)了那些知識

    摘要:最近的計劃是業(yè)余時間學(xué)習(xí)后臺方面的知識,發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺很遙遠(yuǎn)。為了快速進(jìn)入后臺的開發(fā),我也要加快腳步了 showImg(https://segmentfault.com/img/remote/1460000016070790?w=899&h=499); 最近的計劃是業(yè)余時間學(xué)習(xí)Java后臺方面的知識,發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺...

    khs1994 評論0 收藏0
  • 堅持:學(xué)習(xí)Java后臺的第階段,我學(xué)習(xí)了那些知識

    摘要:最近的計劃是業(yè)余時間學(xué)習(xí)后臺方面的知識,發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺很遙遠(yuǎn)。為了快速進(jìn)入后臺的開發(fā),我也要加快腳步了 showImg(https://segmentfault.com/img/remote/1460000016070790?w=899&h=499); 最近的計劃是業(yè)余時間學(xué)習(xí)Java后臺方面的知識,發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺...

    April 評論0 收藏0
  • 堅持:學(xué)習(xí)Java后臺的第階段,我學(xué)習(xí)了那些知識

    摘要:最近的計劃是業(yè)余時間學(xué)習(xí)后臺方面的知識,發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺很遙遠(yuǎn)。為了快速進(jìn)入后臺的開發(fā),我也要加快腳步了 showImg(https://segmentfault.com/img/remote/1460000016070790?w=899&h=499); 最近的計劃是業(yè)余時間學(xué)習(xí)Java后臺方面的知識,發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺...

    waltr 評論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對前端學(xué)習(xí)資源做一個匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對前端學(xué)習(xí)資源做一個匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會及時更新,平時業(yè)務(wù)工作時也會不定期更...

    princekin 評論0 收藏0

發(fā)表評論

0條評論

xinhaip

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<