0、对于 HTTP 协议而言,HTML、CSS、JS、JSON 的本质都是什么?
- 对于HTTP协议而言,html、css、js、json是符合相应语法的字符串
- 用户访问页面时,浏览器根据用户请求的路径,向服务器发起请求,服务器根据判断路径返回给浏览器对应的字符串,同时也返回给浏览器
Content-Type
值。-
Content-Type=text/html
,浏览器把返回的字符串以HTML的语法规则进行解析; - 当HTML中有
<link rel="stylesheet" href="" />
,浏览器再向服务器发起请求,服务器返回字符串和Content-Type=text/css
,浏览器把返回的字符串以CSS语法进行解析; - 当HTML中有
<script src="" />
,浏览器向服务器发起请求,服务器返回字符串和Content-Type=text/javascript
,浏览器把字符串以JS语法进行解析
-
- 用户访问页面时,浏览器根据用户请求的路径,向服务器发起请求,服务器根据判断路径返回给浏览器对应的字符串,同时也返回给浏览器
1、使用数组拼接出如下字符串 ,其中styles数组里的个数不定
<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'
这段字符串很长,如何多行优雅的显示
- 如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠
var longString = "Long \
long \
long \
string";
longString
// "Long long long string"
加了反斜杠以后,原来写在一行的字符串,可以分成多行,效果与写在同一行完全一样。反斜杠的后面必须是换行符,而不能有其他字符(比如空格),否则会报错
- 连接运算符(+)可以连接多个单行字符串,用来模拟多行字符串
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、补全如下代码,让输出结果为字符串: hello\饥人谷
var str = 'hello\\饥人谷';//补全代码
console.log(str);
4、以下代码输出什么?为什么
var str = 'jirengu\nruoyu'
console.log(str.length)//'13',\n被当做换行符,在此处进行了换行,不计入字符串
5、写一个函数,判断一个字符串是回文字符串,如 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、写一个函数,统计字符串里出现频率最多的字符
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、写一个camelize函数,把my-short-string形式的字符串转化成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、写一个 ucFirst函数,返回第一个字母为大写的字符 (***)
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、写一个函数truncate(str, maxlength), 如果str的长度大于maxlength,会把str截断到maxlength长,并加上...
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"//'true'
10、什么是 JSON格式数据?JSON格式数据如何表示对象?window.JSON 是什么?
- 什么是 JSON格式数据?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 - JSON格式数据如何表示对象?
{"name": "Byron", "age": "24"}
- window.JSON 是什么?
用于判断浏览器是否兼容JSON的用法
JSON 对象不被旧版本浏览器支持。可以把下面代码放到脚本的开始位置,这样就可以在那些没有原生支持 JSON 对象的浏览器(比如IE6)中使用 JSON 对象。
以下算法是对原生 JSON对象的模仿
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 格式的字符串转换为 JS 对象?如何把 JS对象转换为 JSON 格式的字符串?
- 如何把JSON 格式的字符串转换为 JS 对象?
var str = '{"name": "wjt", "age": "22", "sex": "female"}';
var obj = {};
obj = JSON.parse(str);
- 如何把 JS对象转换为 JSON 格式的字符串?
var obj = {
name: 'wjt',
age: '22',
sex: 'female'
};
var str = JSON.stringify(obj);