0邑跪、對于 HTTP 協(xié)議而言秦陋,HTML囤攀、CSS袁滥、JS诱篷、JSON 的本質(zhì)都是什么幻馁?
本質(zhì)都是符合各自語法的字符串
1提鸟、使用數(shù)組拼接出如下字符串 歌逢,其中styles數(shù)組里的個(gè)數(shù)不定
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 result = getTplStr(prod); //result為下面的字符串
// <dl class="product"><dt>女裝</dt><dd>短款</dd><dd>冬季</dd><dd>春裝</dd></dl>
2欣簇、寫出兩種以上聲明多行字符串的方法
例如:
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
第一種:使用轉(zhuǎn)義符规脸,轉(zhuǎn)化換行。反斜杠熊咽,反斜杠的后面必須是換行符莫鸭,而不能有其他字符(比如空格),否則會報(bào)錯(cuò)横殴。
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdea\
ncdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
第二種:使用連接運(yùn)算符(+)可以連接多個(gè)單行字符串
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdea'
+ 'cdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
第三種:用多行注釋被因,生成多行字符串
(function () { /*
line 1
line 2
line 3
*/}).toString().split('\n').slice(1,-1).join('\n')
// "line 1 line 2 line 3"
3卿拴、補(bǔ)全如下代碼,讓輸出結(jié)果為字符串: hello\\饑人谷
var str = 'hello\\\\饑人谷' //補(bǔ)全代碼
console.log(str) \\ 輸出為 hello\\饑人谷
4、以下代碼輸出什么?為什么
var str = 'jirengu\nruoyu'
console.log(str.length) // 輸出 13 因?yàn)?\n 算作一個(gè)字符梨与。
5堕花、寫一個(gè)函數(shù),判斷一個(gè)字符串是回文字符串粥鞋,如 abcdcba是回文字符串, abcdcbb不是
function isReverse(str){
return str === str.split('').reverse().join('')
}
6缘挽、寫一個(gè)函數(shù),統(tǒng)計(jì)字符串里出現(xiàn)出現(xiàn)頻率最多的字符
// 首先構(gòu)建字典對象
var str = 'abbvvvvddeeeeeeeee'
var dict = {}
for(var i = 0; i < str.length; i++){
if(dict[str[i]]){
++dict[str[i]]
}else{
dict[str[i]] = 1
}
}
// 接著遍歷字典呻粹,較大的鍵名和鍵值分別存放在 maxValue 和 count 內(nèi)壕曼,最后輸出 count 和 maxValue
var count = 0
var maxValue
for(key in dict){
if(dict[key] > count){
maxValue = key
count = dict[key]
}
}
console.log(count, maxValue)
// 9 "e"
7、寫一個(gè)camelize函數(shù)等浊,把my-short-string形式的字符串轉(zhuǎn)化成myShortString形式的字符串腮郊,如
camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'
function camelize(str){
var arr = str.split('-')
for(var i = 1; i < arr.length; i++){
arr[i] = arr[i][0].toUpperCase() + arr[i].slice(1)
}
return arr.join('')
}
camelize("background-color") == 'backgroundColor' // 輸出 true
camelize("list-style-image") == 'listStyleImage' // 輸出 true
8、寫一個(gè) ucFirst函數(shù)筹燕,返回第一個(gè)字母為大寫的字符
function ucFirst(str) {
return str[0].toUpperCase() + str.slice(1)
}
ucFirst("hunger") == "Hunger" // 輸出 true
9轧飞、寫一個(gè)函數(shù)truncate(str, maxlength), 如果str的長度大于maxlength,會把str截?cái)嗟絤axlength長撒踪,并加上...过咬,如
function truncate(str, maxlength){
if(str.length > maxlength){
return str.slice(0, maxlength) + '...'
}
return str
}
truncate("hello, this is hunger valley,", 10) == "hello, thi..."; // 輸出 true
truncate("hello world", 20) == "hello world" // 輸出 true
10、什么是 JSON格式數(shù)據(jù)糠涛?JSON格式數(shù)據(jù)如何表示對象援奢?window.JSON 是什么?
![](/uploads/default/original/2X/1/1f793699a2d1e84ca88efede6d57f7ddda5f1c70.png)
- JSON 格式(JavaScript Object Notation 的縮寫)是一種用于數(shù)據(jù)交換的文本格式忍捡,2001年由 Douglas Crockford 提出集漾,目的是取代繁瑣笨重的 XML 格式。
- js 中表示對象的方法砸脊,和JSON很相似具篇,但是JSON 更嚴(yán)格,
- 復(fù)合類型的值只能是數(shù)組或?qū)ο罅韫。荒苁呛瘮?shù)驱显、正則表達(dá)式對象、日期對象瞳抓。
- 簡單類型的值只有四種:字符串埃疫、數(shù)值(必須以十進(jìn)制表示)、布爾值和null(不能使用NaN, Infinity, -Infinity和undefined)孩哑。
- 字符串必須使用雙引號表示栓霜,不能使用單引號。
- 對象的鍵名必須放在雙引號里面横蜒。
- 數(shù)組或?qū)ο笞詈笠粋€(gè)成員的后面胳蛮,不能加逗號销凑。
正確的 JSON 格式例如:
["one", "two", "three"]
{ "one": 1, "two": 2, "three": 3 }
{"names": ["張三", "李四"] }
[ { "name": "張三"}, {"name": "李四"} ]
- window.JSON 是ECMAScript 5 定義的瀏覽器內(nèi)置對象,可以用來檢測瀏覽器對JSON的支持情況仅炊。
JSON對象內(nèi)置了 parse() 和 stringfy() 方法斗幼,用于JSON字符串和對象之間的相互轉(zhuǎn)換。
11抚垄、如何把JSON 格式的字符串轉(zhuǎn)換為 JS 對象蜕窿?如何把 JS對象轉(zhuǎn)換為 JSON 格式的字符串?
JSON.parse()將JSON 格式的字符串轉(zhuǎn)換為 JS 對象;
JSON.stringify()將JS對象轉(zhuǎn)換為 JSON 格式的字符串