0、對于 HTTP 協(xié)議而言,HTML、CSS、JS、JSON 的本質(zhì)都是什么?
- 對于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、補全如下代碼,讓輸出結(jié)果為字符串: hello\饑人谷
var str = "hello\\\\饑人谷"
console.log(str)
4、以下代碼輸出什么?為什么
var str = 'jirengu\nruoyu'
console.log(str.length)
13個,\n是轉(zhuǎn)義字符代表換行只占據(jù)一個字符,且空格并不會計算在長度內(nèi)
5、寫一個函數(shù),判斷一個字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是
思路是將字符串翻轉(zhuǎn)與原字符串進行比較,是否是相同的,翻轉(zhuǎn)reverse()是數(shù)組方法
function isPalindrome(str) {
var result; //把字符串轉(zhuǎn)為數(shù)組,并把數(shù)組翻轉(zhuǎn)然后再連接成字符串
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形式的字符串轉(zhuǎn)化成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ù)組或?qū)ο螅荒苁呛瘮?shù)、正則表達式對象、日期對象。
簡單類型的值只有四種:字符串、數(shù)值(必須以十進制表示)、布爾值和null
字符串必須使用雙引號表示,不能使用單引號
對象的鍵名必須放在雙引號里面
數(shù)組或?qū)ο笞詈笠粋€成員的后面,不能加逗號
json對象字面量是一種簡單的描述以及聲明方式。其實字面量就是一種簡單的描述以及聲明方式
JSON是javascript中的內(nèi)置對象,提供了JSON.parse()、JSON.stringify()等方法。
11、如何把JSON 格式的字符串轉(zhuǎn)換為 JS 對象?如何把 JS對象轉(zhuǎn)換為 JSON 格式的字符串?
var obj = {
"name":"luoqian", "age":21
}
JSON.stringify(obj);
var str = '{
"name":"luoqian",
"age":21
}';
JSON.parse(str);