JavaScript編程語言 基礎 (1)

問題:什么是web前端

前端:指界面,計算機(PC)軟件桌面的界面; 計算機端的瀏覽器界面; 移動端的軟件(app)界面; 移動端的瀏覽器界面。

Html+css+JavaScript 使用網頁技術(Html,css,JavaScript)開發界面;

Html,css和JavaScript的關系:

HTML:架構師,網頁內容;

CSS:修飾師:裝飾內容。

JavaScript:魔術師,內容網頁進行交互。

關于學習方法:編程沒有捷徑;只能多寫,多記,多理解。

JavaScript歷史:

1. navigator:網景公司,在1995年推出。Livescript很簡單的。完成網頁中基本的交互能。

2.? 1995 java很火。Write one,run anywhere!!,寫一遍代碼,在各個平臺運行。

3 .網景公司和sun公司合作,推出了javascript。

4. 網景公司,招人,Brendan Eich開發Scheme;開發javascript,像極了java,要比java簡單。慪氣加趕工,10天開發出了javascript。推出javascript1.0。

5. 1996年時,將javascript1.1提交給了ECMA組織,作為js標準。a)提供標準:ECMAScript標準,javascript是實現了ECMAScript標準的語言。

6. 微軟:1996沒有瀏覽器,收購了一家公司,產品:IE,也實現了ECMAScript標準jscript。

7.為期8年的瀏覽器大戰開始。谷歌,火狐,歐鵬,IE safari。

注意:ECMAscript和JavaScript有什么區別?

ECMAscript:語言標準,簡稱ES,JavaScript是實現了ECMAscript的編程語言。

關于瀏覽器及其內核

作為前端開發,熟悉四大內核是非常有必要的。四大內核的解析不同使網頁渲染效果更具多樣化。下面總結一下各常用瀏覽器所使用的內核。?

1、IE瀏覽器內核:Trident內核,也是俗稱的IE內核;?

2、Chrome瀏覽器內核:統稱為Chromium內核或Chrome內核,以前是Webkit內核,現在是Blink內核;?

3、Firefox瀏覽器內核:Gecko內核,俗稱Firefox內核;

4、Safari瀏覽器內核:Webkit內核;

5、Opera瀏覽器內核:最初是自己的Presto內核,后來是Webkit,現在是Blink內核;?

6、360瀏覽器、獵豹瀏覽器內核:IE+Chrome雙內核;?

7、搜狗、遨游、QQ瀏覽器內核:Trident(兼容模式)+Webkit(高速模式);?

8、百度瀏覽器、世界之窗內核:IE內核;?

9、2345瀏覽器內核:以前是IE內核,現在也是IE+Chrome雙內核;

前五個屬于主流瀏覽器。

一些國內的瀏覽器他們的內核:

? 搜狗瀏覽器:兼容模式(IE:Trident)和高速模式(webkit)

? 傲游瀏覽器:兼容模式(IE:Trident)和高速模式(webkit) ?

? QQ瀏覽器:普通模式(IE:Trident)和極速模式(webkit)?

? 360極速瀏覽器:基于谷歌(Chromium)和IE內核 360安全

什么是JavaScript?

JavaScript是一門腳本語言。弱數據類型,基于對象,基于事件驅動的語言。

Javascript是解釋執行的。 解釋器是瀏覽器。

JS特點

(1) 腳本語言。JavaScript是一種解釋型的腳本語言,C、C++、java等語言先編譯后執行,而JavaScript是在程序的運行過程中逐行進行解釋。

(2)基于對象。JavaScript是一種基于對象的腳本語言,它不僅可以創建對象,也能使用現有的對象。

(3)簡單。JavaScript語言中采用的是弱類型的變量類型,對使用的數據類型未做出嚴格的要求,是基于Java基本語句和控制的腳本語言,其設計簡單緊湊。

(4)動態性。JavaScript是一種采用事件驅動的腳本語言,它不需要經過Web服務器就可以對用戶的輸入做出響應。在訪問一個網頁時,鼠標在網頁中進行鼠標點擊或上下移、窗口移動等操作JavaScript都可直接對這些事件給出相應的響應。

(5)跨平臺性。JavaScript腳本語言不依賴于操作系統,僅需要瀏覽器的支持。因此一個JavaScript腳本在編寫后可以帶到任意機器上使用,前提上機器上的瀏覽器支持JavaScript腳本語言,目前JavaScript已被大多數的瀏覽器所支持。

JS應用:

(1) 網站開發:? 網站前端開發:給網頁添加動態的效果。?

?網站后端開發:Node.js讓程序員可以用js自由地寫后端了。

(2) Web app:HTML5提供了很多API支持,可以實現原生應用擁有的大部分功能,但是性能有待提高。像Firefox OS就是基于web app的移動操作系統。

(3) 混合式應用開發:把原生應用的一部分用前端技術實現,使原生應用更加靈活。很多應用都會這樣做。PhoneGap,React Native之類平臺的出現允許程序員使用js來進行移動應用開發。

JavaScript的構成:

1. ECMAScript語言基礎;(JS基本語法)

(1) JavaScript的歷史

(2) ECMAScript標準

(3) 基本語法

(4) 語句

JavaScript 程序的執行單位為行(line),也就是一行一行地執行。一般情況下,每一行就是一個語句。語句(statement)是為了完成某種任務而進行的操作,比如下面就是一行賦值語句。

var x=1+2;復制代碼

這條語句先用var命令,聲明了變量x,然后將1 + 2的運算結果賦值給變量a

1 + 2叫做表達式(expression),指一個為了得到返回值的計算式。語句和表達式的區別在于,前者主要為了進行某種操作,一般情況下不需要返回值;后者則是為了得到返回值,一定會返回一個值。凡是 JavaScript 語言中預期為值的地方,都可以使用表達式。比如,賦值語句的等號右邊,預期是一個值,因此可以放置各種表達式。

語句以分號結尾,一個分號就表示一個語句結束。多個語句可以寫在一行內。

var x=1+2;    var y=1+3;復制代碼

分號前面可以沒有任何內容,JavaScript引擎將其視為空語句。

;;;復制代碼

上面的代碼就表示3個空語句。

表達式不需要分號結尾。一旦在表達式后面添加分號,則 JavaScript 引擎就將表達式視為語句,這樣會產生一些沒有任何意義的語句。

1+2;   
"abc";復制代碼

上面兩行語句只是單純地產生一個值,并沒有任何實際的意義。

? 語句分為條件語句和 循環語句,

? 條件語句:JavaScript 提供if結構和switch結構,完成條件判斷,即只有滿足預設的條件,才會執行相應的語句。


if 語句,if else 語句,


switch 語句,

多個if...else連在一起使用的時候,可以轉為使用更方便的switch結構。

switch (fruit) {case "banana":// ...break;case "apple":// ...break;default:// ...
}
復制代碼

上面代碼根據變量fruit的值,選擇執行相應的case。如果所有case都不符合,則執行最后的default部分。需要注意的是,每個case代碼塊內部的break語句不能少,否則會接下去執行下一個case代碼塊,而不是跳出switch結構。


三元運算符,

JavaScript 還有一個三元運算符(即該運算符需要三個運算子)?:,也可以用于邏輯判斷。

(條件) ? 表達式1 : 表達式2
復制代碼

上面代碼中,如果“條件”為true,則返回“表達式1”的值,否則返回“表達式2”的值。

var even = (n % 2 === 0) ? true : false;
復制代碼

上面代碼中,如果n可以被2整除,則even等于true,否則等于false。它等同于下面的形式。

var even;
if (n % 2 === 0) {even = true;
} else {even = false;
}
復制代碼

這個三元運算符可以被視為if...else...的簡寫形式,因此可以用于多種場合。

var myVar;
console.log(myVar ?'myVar has a value' :'myVar does not have a value'
)
// myVar does not have a value
復制代碼

上面代碼利用三元運算符,輸出相應的提示。如果過變量有 value 值,輸出?前面的值,如果沒有值,輸出后面的值。

var msg = '數字' + n + '是' + (n % 2 === 0 ? '偶數' : '奇數');
復制代碼

上面代碼利用三元運算符,在字符串之中插入不同的值。


(5) 變量

1.概念:變量是對“值”的具名引用。變量就是為“值”起名,然后引用這個名字,就等同于引用這個值。變量的名字就是變量名。(變化的量,在JS程序中,用于存儲數據的容器。)

2.如何在JS程序中使用變量?

? ?a) 聲明變量:告訴瀏覽器,我要使用這個變量;var 變量名稱;//這是聲明變量的語法。

? ?b) 初始化變量:給變量賦值;

? ? 變量名稱=值;? ?//=;賦值,將值存儲到變量中;

? ? 賦值操作:將等號右邊的值(可以是變量)賦值給左邊的變量;

? ?c) 聲明并初始化變量

? ? var 變量名稱=值;

? ? ? 注意:變量使用之前必須要聲明;

? ? ? ? ? ? ? ? 只聲明不賦值,系統給變量默認值:undefined;

? ? ? ? ? ? ? ? 變量名稱用于到內存中存儲數據或者是取數據;

d) 定義多個變量;

var a,b,c; 即var 變量名稱,變量,變量

e) 關鍵字和保留字

? ? 關鍵字:在JS程序中,有特定含義的單詞;

? ? 保留字:在JS程序中,與特定含義的單詞,但是還沒有被JS程序使用。

標識符命名規范:

  • ? ? 標識符由字母,數字,下劃線,$構成;
  • 標識符的首字母不能為數字:var 8a;//錯誤
  • 標識符不能為關鍵字或者是保留字;var var; //錯誤
  • 約定俗稱:標識符要見名知意;
  • 約定俗成:標識符要使用駝峰式命名;變量使用小駝峰(第一個單詞首字母小寫);
? ? ? ? ? ? getElementById //小駝峰? ? GetElementById //大駝峰
  • JS嚴格區分大小寫。

(6) 數據類型 typeOf()

? 基本數據類型:typeof()變量,獲取變量的數據類型;

a) 數字類型: 整數:十進制:0-9 ;? ?浮點數(小數)

b) 字符串類型:用單引號或者雙引號括起數據,字符串,由字符(文本)構成;

c) 布爾類型:用于判斷? ? true:真? ? false:假

d) 特殊類型

  • null:代表空值,一般清除資源的時候用,初始化變量;
  • undefined:代表變量未初始化;
  • NaN:Not a Number 不是一個整數,非數字之間的運算,結果為NaN;
  • isNaN(s)判斷是否NaN(不是數字),如果該字符里不是全數字,則返回true;如果是全數字,則返回false。
引用數據類型

? ? a)數組? ?b) 對象(函數)

(7) 運算符

?a) 加法運算符 基本規則:(+)是最常見的運算符,用來求兩個數值的和。1+1 //2

? ?JavaScript 允許非數值的相加 true+true //2? ? 1+true //2

? 上面代碼中,第一行是兩個布爾值相加,第二行是數值與布爾值相加。這兩種情況,布爾值? ? ? ? ?都會自動轉成數值,然后再相加。

?比較特殊的是,如果是兩個字符串相加,這時加法運算符會變成連接運算符,返回一個新的字? ?符串,將兩個原字符串連接在一起。

"a"+"bc" //"abc"復制代碼

?如果一個運算子是字符串,另一個運算子是非字符串,這時非字符串會轉成字符串,再連接在? ?一起。

1+"a" //"1a"
false+"a" //"false"復制代碼

?加法運算符是在運行時決定,到底是執行相加,還是執行連接。也就是說,運算子的不同,導? ?致了不同的語法行為,這種現象稱為“重載”(overload)。由于加法運算符存在重載,可? ? ? 能執行兩種運算,使用的時候必須很小心。

"3"+4+5 //"345"
3+4+"5" //"75"復制代碼

?除了加法運算符,其他算術運算符(比如減法、除法和乘法)都不會發生重載。它們的規則? ?是:所有運算子一律轉為數值,再進行相應的數學運算。

?對象的相加??如果運算子是對象,必須先轉成原始類型的值,然后再相加

b) 包括加法運算符在內,JavaScript 共提供10個算術運算符,用來完成基本的算術運算。

  • 加法運算符x + y

  • 減法運算符x - y
  • 乘法運算符x * y
  • 除法運算符x / y
  • 指數運算符x ** y
  • 余數運算符x % y
  • 自增運算符++x 或者 x++
  • 自減運算符--x 或者 x--
  • 數值運算符+x
  • 負數值運算符-x

余數運算符%)返回前一個運算子被后一個運算子除,所得的余數。需要注意的是,運? ? ?算結果的正負號由第一個運算子的正負號決定?

-1%2 //-1
1%-2 //1復制代碼

所以,為了得到負數的正確余數值,可以先使用絕對值函數。

c) 關系運算符 用于比較兩個值的大小,然后返回一個布爾值,表示是否滿足指定的條件。

注意,比較運算符可以比較各種類型的值,不僅僅是數值。JavaScript 一共提供了8個比較運算符。

  • < 小于運算符
  • > 大于運算符
  • <= 小于或等于運算符
  • >= 大于或等于運算符
  • == 相等運算符(只判斷值是否相等)
  • === 嚴格相等運算符(判斷值和數據類型,叫全等或恒等)
  • != 不相等運算符
  • !== 嚴格不相等運算符

?d)?賦值運算符(Assignment Operators)用于給變量賦值。最常見的賦值運算符,當然就是等號(=var x=1;? var x=y;

賦值運算符還可以與其他運算符結合,形成變體。下面是與算術運算符的結合。

x=x+y; <=> x+=y;
x=x-y; <=> x-=y;
x=x*y; <=> x*=y;
x=x/y; <=> x/=y;
x=x%y; <=> x%=y;
x=x**y; <=> x*=y;復制代碼

e) 邏輯運算符

布爾運算符用于將表達式轉為布爾值,一共包含四個運算符。

  • 取反運算符:!
  • 且運算符:&&
  • 或運算符:||
  • 三元運算符:?:

(8) 函數

(9) 數組

(10)?字符串

(11) 作用域

(12) 原形

(13) 閉合

(14) JS面向對象設計

2. DOM(文檔對象模型):對網頁的操作,即對瀏覽器(可看做容器)內的內容進行操作

DOM: Document 整篇文檔? Object 文檔對象? Model 模型?

(選項卡,輪播圖,更改文檔結構,購物車,樓梯導航;這些是DOM里邊最基礎的)

Dom樹(層級嵌套)


3.? BOM(瀏覽器對象模型):對瀏覽器本身進行操作。

Browser Object Model

編寫JavaScript程序

1. 所有的js程序都要寫在script標簽中

2. console.log(“輸出的信息”)

a) 輸出的信息要用引號括起來? ? ?b) 每寫完一條語句,要以分號結束? ??

?c) 編程中用到的標點符號,都要使用英文的。

3. script標簽:嵌入js代碼

a) script標簽可以寫在html中的任何地方,并且html中可以有多個script標簽

b)? html中的代碼:都是從上往下逐條執行。

c) script標簽中常用的屬性:

?i.? type:規定腳本語言的類型,text/javascript

ii.? src:資源所在的路徑,引入外部的js文件,script中添加的代碼被忽略。

4. 彈出框提示:

window.alert(“提示信息”):使用窗口的提示框功能輸出提示信息。

注: a) alert阻塞之后的代碼執行。? ?b) window可以省略。

c) alert中提示信息的換行

5. 單雙引號:? 在提示信息中,顯示引號;內部使用雙引號,外部使用單引號;

console.log('"職位介紹"'); console.log("<input type='text' />");

6. 往網頁中輸出內容:(HTML代碼)

a) document.write(“html代碼”):將html代碼寫入到網頁中。

i.? document:文檔,所有的頁面都是文檔,可以認為是網頁

i.? write:寫

7.? 1. confirm(“提示信息”):出現一個確認框(提示信息、確認按鈕、取消按鈕);

a) 提示用戶是否確定對信息的操作。

避免用戶誤操作當點擊確定的時候,返回一個確認的結果true(真)

當點擊取消的時候,返回一個取消的結果false(假)

confirm("確定刪除嗎?");//返回真或者假

console.log(confirm("確定刪除嗎?"));

8. prompt(“提示信息”):出現一個輸入框,提示用戶輸入信息的。開發時不用。

9.? javascript注釋:被瀏覽器忽略不執行的內容。

a) 用來說明代碼的功能? ??

b) 兩種注釋方式:? i.單行注釋://? ? ? ? ? ? i.多行注釋:/* */




本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276555.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276555.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276555.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

shell結合expect寫的批量scp腳本工具

轉載鏈接&#xff1a;http://www.jb51.net/article/34005.htm expect用于自動化地執行linux環境下的命令行交互任務&#xff0c;例如scp、ssh之類需要用戶手動輸入密碼然后確認的任務。有了這個工具&#xff0c;定義在scp過程中可能遇到的情況&#xff0c;然后編寫相應的處理語…

ASP記數器

這兩天有好幾個老的ASP網站要改&#xff0c;其中有要求加記數器&#xff0c;為圖簡單&#xff0c;就用文本文件的形式存儲記數。以前用ifream的形式嵌入&#xff0c;不能很好的控制記數器顯示的風格&#xff0c;現在改進了一下&#xff0c;可以很好的與嵌入板塊風格結合了。把做…

php利用openssl實現RSA非對稱加密簽名

轉載鏈接&#xff1a;http://liuxufei.com/weblog/jishu/376.html 1. 先用php生成一對公鑰和私鑰 $res openssl_pkey_new(); openssl_pkey_export($res,$pri); $d openssl_pkey_get_details($res); $pub $d[key]; var_dump($pri,$pub); 2. 保存好自己的私鑰&#xff0c;把公…

[轉] DevExpress 第三方控件漢化的全部代碼和使用方法

DevExpress.XtraEditors.Controls 此控件包中包含的控件最多&#xff0c;包括文本框&#xff0c;下拉列表&#xff0c;按鈕&#xff0c;等等 DevExpress.XtraGrid 網格 DevExpress.XtraBars 菜單欄 和 工具欄 DevExpress.XtraNavBar 導航條 DevExpress.XtraPr…

QPM 性能監控組件總篇

QPM &#xff08;Quality Performance Monitor&#xff09; 是一個質量性能監控組件&#xff0c;可以很方便的查看當前 App 的性能和常用數據。目前主要運行在 Android 平臺上&#xff0c;通過集成 QPM 組件&#xff0c;可以在 App 中通過懸浮窗可視化相關實時數據。意在幫助廣…

福音!微信個人公眾號可以改名了!

微信個人公眾號可以改名了&#xff01;&#xff01;&#xff01;今年&#xff0c;我們學校從景德鎮陶瓷學院更名為景德鎮陶瓷大學&#xff0c;但苦于微信限制&#xff0c;很多微信公眾號無法更名。很多組織社團就放棄了原先的關注量&#xff0c;重新申請注冊賬號。當前我們的訂…

js list刪除指定元素_刪除js數組中的指定元素,有這兩步就夠了

js數組是js部分非常重要的知識&#xff0c;有時我們有這么個需求js數組刪除指定元素&#xff0c;先定義一個函數來獲取刪除指定元素索引值&#xff0c;然后用js數組刪除的方法&#xff0c;來刪除指定元素即可&#xff0c;就兩步不難&#xff0c;很簡單。1、JS的數組對象定義一個…

sudo 安裝 常見錯誤

運行環境Linux&#xff1a; 1、sudo&#xff1a;安裝 apt-get install sudo 2、sudo: must be setuid root錯誤解決方法. ls -l /usr/bin/sudo chown root:root /usr/bin/sudo chmod 4755 /usr/bin/sudo reboot 3、sudo&#xff1a;提示用戶無權限之類 在 /etc/…

慕課網高并發實戰(一)-并發與高并發基本概念

課程網址 并發&#xff1a; 同時擁有兩個或者多個線程&#xff0c;如果程序在單核處理器上運行&#xff0c;多個線程交替得換入或者換出內存&#xff0c;這些線程是同時“存在”的&#xff0c;每個線程都處于執行過程中的某個狀態&#xff0c;如果運行在多核處理器上&#xff…

2009最經典名句

一&#xff1a;我的優點是&#xff1a;我很帥&#xff1b;但是我的缺點是&#xff1a;我帥的不明顯. 二&#xff1a;談錢不傷感情&#xff0c;談感情最他媽傷錢。 三&#xff1a;我詛咒你一輩子買方便面沒有調料包。 四&#xff1a;會計說&#xff1a;“你晚點來領工資吧&#…

計算機協會丨讓技能得到提升,讓思維受到啟迪

“ 各位2016級新生&#xff0c;新的學期馬上就要開始了&#xff0c;學校的各個組織和社團你真的了解了嗎&#xff1f;在眼花繚亂的社團里如何找到自己真正喜歡的呢&#xff1f;或許看完計算機協會的納新微信你就都明白啦&#xff01;關鍵詞&#xff1a;計算機協會景德鎮陶瓷大學…

ondestroy什么時候調用_尾調用和尾遞歸

尾調用1. 定義尾調用是函數式編程中一個很重要的概念&#xff0c;當一個函數執行時的最后一個步驟是返回另一個函數的調用&#xff0c;這就叫做尾調用。注意這里函數的調用方式是無所謂的&#xff0c;以下方式均可&#xff1a;函數調用: func()方法調用: obj.method()call調用:…

查看/修改Linux時區和時間

轉載鏈接&#xff1a;http://blog.csdn.net/colincjl/article/details/6133036 查看/修改Linux時區和時間 一、時區 1. 查看當前時區 date -R 2. 修改設置時區 方法(1) tzselect 方法(2) 僅限于RedHat Linux 和 CentOS timeconfig 方法(3) 適用于Debian dpkg-reconfigure tzdat…

dhl:使用return RedirectToAction()和 return view()

一個Action&#xff1a; Code/// <summary> /// Friend好友的地 /// </summary> /// <returns></returns> public ActionResult FriendFarm(string pid) {BLL.DTOFarm farm new AppleGrange.BLL.DTOFarm(pid); …

【更名通知】將以個人名義繼續更新維護

這是我&#xff08;2013年任職計算機協會會長&#xff09;在2013年申請的公眾號。由于2016年學校陶院更名為陶大&#xff0c;在當時公眾號無法修改名稱。后來計協的的學弟學妹申請了新的公眾號"陶大計算機Association"&#xff0c;大家可以前往關注&#xff0c;所以該…

CentOS7.6 MySQL8環境搭建 配置遠程登錄 字符集UTF8 簡單密碼

一、環境準備 1、清理環境中系統自帶的MySQL &#xff08;1&#xff09;刪除系統自帶的MySQL或Mariadb yum remove mysql-libs &#xff08;2&#xff09;查詢系統中是否還有殘余的依賴包 rpm -qa | grep mariadb &#xff08;3&#xff09;刪除rpm依賴包 rpm -e --nodeps mar…

radio切換控制div顯示_JavaScript連載31圖片動態切換以及關閉圖片案例

一、圖標切換31.1點擊那兩個按鈕可以做到輪番顯示圖片二、關閉圖片案例31.2點擊右上角的叉&#xff0c;圖片會消失。三、源碼&#xff1a;D31_iconSwitch.htmlD31_2_CloseImage.html地址:https://github.com/ruigege66/JavaScript/blob/master/D31_iconSwitch.htmlhttps://gith…

jQuery 1.9+ 移除$.browser方法

轉載鏈接&#xff1a;http://blog.csdn.net/czplplp_900725/article/details/8704438 jQuery 從 1.9 版開始&#xff0c;移除了 $.browser 和 $.browser.version &#xff0c;取而代之的是 $.support。 在更新的 2.0 版本中&#xff0c;將不再支持 IE 6/7/8。 以后&#xff0c;…

ASP.NET跨頁傳值方法匯總

方法一&#xff1a;問號傳值&#xff08;Response.Redirect方法&#xff09;1&#xff1a;源頁&#xff1a;在按鈕的點擊事件程序中寫入Response.Redirect方法&#xff0c;在其中使用問號傳值。如&#xff1a;Response.Redirect("Default2.aspx?id"txtId.Text.Trim(…

工作一年后,我有些感悟(寫于2017年)

時間拉回到2016年5月23日&#xff0c;當天拍畢業照&#xff0c;晚上是大學畢業酒會&#xff0c;那一晚整個酒店都彌漫著傷感的氣息。那一晚大家為了找KTV拖延到很晚&#xff0c;最后一群人選擇來到了操場&#xff0c;凌晨兩點多一群人還在操場上玩著游戲。5月25日離校&#xff…