0、對于 HTTP 協(xié)議而言淳附,HTML、CSS蠢古、JS奴曙、JSON 的本質都是什么?
- 對于HTTP協(xié)議而言草讶,html洽糟、css、js堕战、json是符合相應語法的字符串
- 用戶訪問頁面時坤溃,瀏覽器根據(jù)用戶請求的路徑,向服務器發(fā)起請求嘱丢,服務器根據(jù)路判斷徑返回給瀏覽器對應的字符串薪介,同時也返回給瀏覽器Content-Type值。
- HTML:Content-Type=text/html越驻,瀏覽器就把字符串當HTML進行解析汁政;
- CSS:當 HTML 中有<link rel="stylesheet" href="" />,瀏覽器再向服務器發(fā)起請求缀旁,服務器返回字符串和Content-Type=text/css记劈,瀏覽器就把返回的字符串當 CSS 進行解析;
- JS: 當HTML中有<script src="" />,瀏覽器向服務器發(fā)起請求并巍,服務器返回字符串和Content-Type=text/javascript目木,瀏覽器就把字符串當 JS 進行解析,返回給用戶懊渡。
1刽射、使用數(shù)組拼接出如下字符串 军拟,其中styles數(shù)組里的個數(shù)不定
<script>
var prod = {
name: '女裝',
styles: ['短款', '冬季', '春裝']
};
function getTplStr(data){
var arr = [];
arr.push('<dl class="product">');
arr.push('<dt>"+data.name+"</dt>'>;
for(var key in data.styles) {
arr.push('<dd>"+data.styles[key]+"</dd>');
}
arr.push(' </dl>');
return arr.join(' ');
}
var demo = getTplStr(prod);
console.log(demo);
</script>
2、寫出兩種以上聲明多行字符串的方法
例如:
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
這段字符串很長柄冲,如何多行優(yōu)雅的顯示
①在每一行的尾部使用反斜杠
var str='abcdeabcdeabcdeancdeabcdea\
bcdeabcdeancdeabcdeab\
cdeabcdeancdeabcdeabcdeabcdeancde';
②連接運算符(+)可以連接多個單行字符串吻谋,用來模擬多行字符串
var str = 'abcdeabcdeabcd'
+'eancdeabcdeabcdeabcde'
+'ancdeabcdeabcdeabcde'
+'ancdeabcdeabcdeabcdeancde';
3、補全如下代碼,讓輸出結果為字符串: hello\饑人谷
var str = "hello\\\\饑人谷"
console.log(str)
4现横、以下代碼輸出什么?為什么
var str = 'jirengu\nruoyu'
console.log(str.length)
13個漓拾,\n是轉義字符代表換行只占據(jù)一個字符,且空格并不會計算在長度內
5戒祠、寫一個函數(shù)骇两,判斷一個字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是
思路是將字符串翻轉與原字符串進行比較姜盈,是否是相同的,翻轉reverse()是數(shù)組方法
function isPalindrome(str) {
var result; //把字符串轉為數(shù)組低千,并把數(shù)組翻轉然后再連接成字符串
var reverseStr = str.split('').reverse().join('');
if (str == reverseStr) {
result = true;
}else{
result = false;
} return result;
}
6、寫一個函數(shù)馏颂,統(tǒng)計字符串里出現(xiàn)出現(xiàn)頻率最多的字符
function most(str) {
//傳入了一個字符串,遍歷一個這個字符串
//創(chuàng)建一個對象示血,將字符串的個數(shù)都存入到這個對象中
var dist ={}
for (var i=0; i<str.length; i++) {
//如果有這個鍵
if (dist[str[i]]) {
dist[str[i]]++ }else {
dist[str[i]] = 1;
}
}
var count = 0;
var mostChar;
for (var key in dist) {
if (dist[key] > count) {
count = dist[key];
mostChar = key;
}
}
return mostChar+':'+count
}
7、寫一個camelize函數(shù)救拉,把my-short-string形式的字符串轉化成myShortString形式的字符串难审,如
camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'
function camelize(str) {
var arr = str.split('-');
var arr1 = [];
for (var i=0; i<arr.length; i++) {
if (i>0) {
arr1.push(arr[i].replace(arr[i][0],arr[i][0].toUpperCase()));
}else {
arr1.push(arr[i])
}
}
return arr1.join('');
}
var str="background-color-size";
var exist=false;
var res=[].map.call(str,function(item){
if(item==="-"){
exist=true; return "";
} if(exist){
exist=false;
return item.toUpperCase();
} return item;
});
console.log(res.join(""));
8、寫一個 ucFirst函數(shù)亿絮,返回第一個字母為大寫的字符 (***)
ucFirst("hunger") == "Hunger"
function toUpper(str) {
var first = str[0].toUpperCase();
//把后面幾個字符去掉告喊,然后再拼接上第一個字符
var last = str.substr(1); return first+last;
}
9、寫一個函數(shù)truncate(str, maxlength), 如果str的長度大于maxlength派昧,會把str截斷到maxlength長黔姜,并加上...,如
truncate("hello, this is hunger valley,", 10) == "hello, thi...";
truncate("hello world", 20) == "hello world"
function truncate(str,maxlength) {
var string;
if (maxlength >= str.length) {
string = str;
}else {
string = str.slice(0,maxlength) + '...';
} return string;
}
10蒂萎、什么是 JSON格式數(shù)據(jù)秆吵?JSON格式數(shù)據(jù)如何表示對象?window.JSON 是什么五慈?
json(javascript object notation)的縮寫是一種用于數(shù)據(jù)交換的文本格式帮毁,目的是取代繁瑣的xml。具有書寫簡單豺撑,一目了然烈疚,符號javascript原生語法,可以由解釋引擎直接處理聪轿,不用另外添加解析代碼爷肝。所以,json迅速被接受,成為es5標準的一部分灯抛。
json對象就是json的值金赦,基本要符合以下規(guī)則
復合類型的值只能是數(shù)組或對象,不能是函數(shù)对嚼、正則表達式對象夹抗、日期對象。
簡單類型的值只有四種:字符串纵竖、數(shù)值(必須以十進制表示)漠烧、布爾值和null
字符串必須使用雙引號表示,不能使用單引號
對象的鍵名必須放在雙引號里面
數(shù)組或對象最后一個成員的后面靡砌,不能加逗號
json對象字面量是一種簡單的描述以及聲明方式已脓。其實字面量就是一種簡單的描述以及聲明方式
JSON是javascript中的內置對象,提供了JSON.parse()通殃、JSON.stringify()等方法度液。
11、如何把JSON 格式的字符串轉換為 JS 對象画舌?如何把 JS對象轉換為 JSON 格式的字符串?
var obj = {
"name":"luoqian", "age":21
}
JSON.stringify(obj);
var str = '{
"name":"luoqian",
"age":21
}';
JSON.parse(str);