0、對(duì)于 HTTP 協(xié)議而言,HTML、CSS、JS、JSON 的本質(zhì)都是什么?
- 對(duì)于HTTP協(xié)議而言,html、css、js、json是符合相應(yīng)語(yǔ)法的字符串
- 用戶訪問(wèn)頁(yè)面時(shí),瀏覽器根據(jù)用戶請(qǐng)求的路徑,向服務(wù)器發(fā)起請(qǐng)求,服務(wù)器根據(jù)判斷路徑返回給瀏覽器對(duì)應(yīng)的字符串,同時(shí)也返回給瀏覽器
Content-Type
值。-
Content-Type=text/html
,瀏覽器把返回的字符串以HTML的語(yǔ)法規(guī)則進(jìn)行解析; - 當(dāng)HTML中有
<link rel="stylesheet" href="" />
,瀏覽器再向服務(wù)器發(fā)起請(qǐng)求,服務(wù)器返回字符串和Content-Type=text/css
,瀏覽器把返回的字符串以CSS語(yǔ)法進(jìn)行解析; - 當(dāng)HTML中有
<script src="" />
,瀏覽器向服務(wù)器發(fā)起請(qǐng)求,服務(wù)器返回字符串和Content-Type=text/javascript
,瀏覽器把字符串以JS語(yǔ)法進(jìn)行解析
-
- 用戶訪問(wèn)頁(yè)面時(shí),瀏覽器根據(jù)用戶請(qǐng)求的路徑,向服務(wù)器發(fā)起請(qǐng)求,服務(wù)器根據(jù)判斷路徑返回給瀏覽器對(duì)應(yīng)的字符串,同時(shí)也返回給瀏覽器
1、使用數(shù)組拼接出如下字符串 ,其中styles數(shù)組里的個(gè)數(shù)不定
<dl class="product"><dt>女裝</dt><dd>短款</dd><dd>冬季</dd><dd>春裝</dd></dl>
var prod = {
name: '女裝',
styles: ['短款', '冬季', '春裝']
};
function getTplStr(data){
var arr = [];
arr.push('<dl class="product">');
arr.push('<dt>' + prod.name + '</dt>');
for(var key in data.styles) {
arr.push('<dd>' + prod.styles[key] + '</dd>');
}
arr.push('</dl>');
return arr.join('');
}
var result = getTplStr(prod); //result為下面的字符串
console.log(result);
2、寫出兩種以上聲明多行字符串的方法
例如:
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
這段字符串很長(zhǎng),如何多行優(yōu)雅的顯示
- 如果長(zhǎng)字符串必須分成多行,可以在每一行的尾部使用反斜杠
var longString = "Long \
long \
long \
string";
longString
// "Long long long string"
加了反斜杠以后,原來(lái)寫在一行的字符串,可以分成多行,效果與寫在同一行完全一樣。反斜杠的后面必須是換行符,而不能有其他字符(比如空格),否則會(huì)報(bào)錯(cuò)
- 連接運(yùn)算符(+)可以連接多個(gè)單行字符串,用來(lái)模擬多行字符串
var longString = 'Long '
+ 'long '
+ 'long '
+ 'string';
- 利用多行注釋,生成多行字符串的變通方法
(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);
4、以下代碼輸出什么?為什么
var str = 'jirengu\nruoyu'
console.log(str.length)//'13',\n被當(dāng)做換行符,在此處進(jìn)行了換行,不計(jì)入字符串
5、寫一個(gè)函數(shù),判斷一個(gè)字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是
function palindrome(str) {
var str2 = str.split('').reverse().join('');
if (str2 === str && str != ''){
console.log('該字符串是回文');
}else {
console.log('該字符串不是回文');
}
}
palindrome('abcdcba');//'該字符串是回文'
palindrome('abcdcbb');//'該字符串不是回文'
6、寫一個(gè)函數(shù),統(tǒng)計(jì)字符串里出現(xiàn)頻率最多的字符
function statistics(str) {
var dict = {};
for(var i = 0; i < str.length; i++){
if(dict[str[i]]){
++dict[str[i]];
}else{
dict[str[i]] = 1;
}
}
var count = 0;
var maxValue;
for(var key in dict){
if(dict[key] > count){
maxValue = key;
count = dict[key];
}
}
console.log(maxValue,count);
}
var str = 'hello,wjt';
statistics(str);//'l,2'
7、寫一個(gè)camelize函數(shù),把my-short-string形式的字符串轉(zhuǎn)化成myShortString形式的字符串,
function camelize(str) {
var arr = [];
arr = str.split('-');
for(var i = 1; i < arr.length; i++){
arr[i] = arr[i].split('');
arr[i][0] = arr[i][0].toUpperCase();
arr[i] = arr[i].join('');
}
str = arr.join('');
return str;
}
camelize("background-color") == 'backgroundColor'//'true'
camelize("list-style-image") == 'listStyleImage'//'true'
8、寫一個(gè) ucFirst函數(shù),返回第一個(gè)字母為大寫的字符 (***)
function ucFirst(str) {
var arr = [];
arr = str.split(' ');
for(var i = 0; i < arr.length; i++){
arr[i] = arr[i].split('');
arr[i][0] = arr[i][0].toUpperCase();
arr[i] = arr[i].join('');
}
str = arr.join(' ');
console.log(str);
}
ucFirst("hunger hunger hunger");//'Hunger Hunger Hunger'
9、寫一個(gè)函數(shù)truncate(str, maxlength), 如果str的長(zhǎng)度大于maxlength,會(huì)把str截?cái)嗟絤axlength長(zhǎng),并加上...
function truncate(str, maxlength) {
if(maxlength < str.length){
if(maxlength < 3){
str = str.slice(0,maxlength);
return str + "...";
}
str = str.slice(0,maxlength-3);
return str + "...";
}else if(maxlength >= str.length){
return str;
}
}
或
function truncate(str, maxlength) {
if(str.length <= maxlength){
return str;
}else {
if(maxlength > 3){
maxlength -= 3;
}
var truncted = str.substr(0,maxlength);
return truncted + "...";
}
}
truncate("hello, this is hunger valley,", 10) == "hello, thi...";//'true'
truncate("hello world", 20) == "hello world"http://'true'
10、什么是 JSON格式數(shù)據(jù)?JSON格式數(shù)據(jù)如何表示對(duì)象?window.JSON 是什么?
- 什么是 JSON格式數(shù)據(jù)?
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個(gè)子集。 - JSON格式數(shù)據(jù)如何表示對(duì)象?
{"name": "Byron", "age": "24"}
- window.JSON 是什么?
用于判斷瀏覽器是否兼容JSON的用法
JSON 對(duì)象不被舊版本瀏覽器支持。可以把下面代碼放到腳本的開(kāi)始位置,這樣就可以在那些沒(méi)有原生支持 JSON 對(duì)象的瀏覽器(比如IE6)中使用 JSON 對(duì)象。
以下算法是對(duì)原生 JSON對(duì)象的模仿
if (!window.JSON) {
window.JSON = {
parse: function(sJSON) { return eval('(' + sJSON + ')'); },
stringify: (function () {
var toString = Object.prototype.toString;
var isArray = Array.isArray || function (a) { return toString.call(a) === '[object Array]'; };
var escMap = {'"': '\\"', '\\': '\\\\', '\b': '\\b', '\f': '\\f', '\n': '\\n', '\r': '\\r', '\t': '\\t'};
var escFunc = function (m) { return escMap[m] || '\\u' + (m.charCodeAt(0) + 0x10000).toString(16).substr(1); };
var escRE = /[\\"\u0000-\u001F\u2028\u2029]/g;
return function stringify(value) {
if (value == null) {
return 'null';
} else if (typeof value === 'number') {
return isFinite(value) ? value.toString() : 'null';
} else if (typeof value === 'boolean') {
return value.toString();
} else if (typeof value === 'object') {
if (typeof value.toJSON === 'function') {
return stringify(value.toJSON());
} else if (isArray(value)) {
var res = '[';
for (var i = 0; i < value.length; i++)
res += (i ? ', ' : '') + stringify(value[i]);
return res + ']';
} else if (toString.call(value) === '[object Object]') {
var tmp = [];
for (var k in value) {
if (value.hasOwnProperty(k))
tmp.push(stringify(k) + ': ' + stringify(value[k]));
}
return '{' + tmp.join(', ') + '}';
}
}
return '"' + value.toString().replace(escRE, escFunc) + '"';
};
})()
};
}
11、如何把JSON 格式的字符串轉(zhuǎn)換為 JS 對(duì)象?如何把 JS對(duì)象轉(zhuǎn)換為 JSON 格式的字符串?
- 如何把JSON 格式的字符串轉(zhuǎn)換為 JS 對(duì)象?
var str = '{"name": "wjt", "age": "22", "sex": "female"}';
var obj = {};
obj = JSON.parse(str);
- 如何把 JS對(duì)象轉(zhuǎn)換為 JSON 格式的字符串?
var obj = {
name: 'wjt',
age: '22',
sex: 'female'
};
var str = JSON.stringify(obj);