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数组里的个数不定
var prod = {
name: '女装',
styles: ['短款', '冬季', '春装']
};
function getTplStr(data){
var str = '<dl class="product">' + '<dt>' + prod.name + '</dt>';
for(var i = 0; i < prod.styles.length; i++){
str += '<dd>' + prod.styles[i] + '</dd>'
}
str += '</dl>';
return str;
};
var result = getTplStr(prod); //result为下面的字符串
console.log(result);
//<dl class="product"><dt>女装</dt><dd>短款</dd<dd>冬季</dd><dd>春装</dd></dl>
2. 写出两种以上声明多行字符串的方法
例如:
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
方法一:
var str = 'abcdeabcdeabcdeancdea\
bcdeabcdeabcdeancdeabcdeabcde\
abcdeancdeabcdeabcdeabcdeancde';
方法二:
var str = 'abcdeabcdeabcdeancdea' +
'bcdeabcdeabcdeancdeabcdeabcde' +
'abcdeancdeabcdeabcdeabcdeancde';
3. 补全如下代码,让输出结果为字符串: hello\饥人谷
var str = 'hello\\\\饥人谷'
console.log(str)
4. 以下代码输出什么,为什么?
var str = 'jirengu\nruoyu'
console.log(str.length); //13,\n 为转义字符,转义字符只占据一个字符,且空格不算在字符长度里
5. 写一个函数,判断一个字符串是回文字符串,如 abcdcba 是回文字符串, abcdcbb不是
function isPal(str) {
return str.split('').reverse().join('') === str;
}
isPal('abcdcba'); //true
isPal('abcdcbb'); //false
6. 写一个函数,统计字符串里出现出现频率最多的字符
var str = 'You raise me up,so I can stand on mooooooooooooooountains';
var dict = {};
var count = 0;
var maxValue;
for (var i = 0; i < str.length; i++){
if(dict[str[i]]){
++(dict[str[i]])
} else {
dict[str[i]] = 1;
}
}
for (key in dict){
if(dict[key] > count){
maxValue = key;
count = dict[key];
}
}
console.log(count, maxValue);
7. 写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如:
function camelize(str) {
var arr = str.split('-');
for(var i = 1; i < arr.length; i++){
arr[i] = arr[i][0].toUpperCase() + arr[i].substr(1);
}
return arr.join('');
}
camelize("background-color"); //'backgroundColor'
camelize("list-style-image"); //'listStyleImage'
8. 写一个 ucFirst函数,返回第一个字母为大写的字符
function ucFirst(str){
return str[0].toUpperCase() + str.substr(1);
}
ucFirst("hunger"); //Hunger
9. 写一个函数truncate(str, maxlength), 如果str的长度大于maxlength,会把str截断到maxlength长,并加上...,如:
function truncate(str,num){
if(str.length > num){
return str.substr(0, num) + '...';
} else {
return str;
}
}
truncate("hello, this is hunger valley,", 10); //hello, thi...
truncate("hello world", 20); //hello world
10. 什么是 JSON格式数据,JSON格式数据如何表示对象,window.JSON 是什么?
- JSON 格式(JavaScript Object Notation 的缩写)是一种用于数据交换的文本格式
- JSON 可表示简单值(字符串,数值(必须十进制),布尔值和 null,但不支持undefined),对象,数组。但不支持变量、函数或对象实例(如正则表达式和日期)
- 表示对象:
- 数据在名值对中,名值对中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号:隔开
- 数据由逗号分隔
- 花括号 {} 保存对象
- 方括号 [] 保存数组
[25, "hi", true]
{
"one": 1,
"two": "two",
"three": [
25,
"hi",
true
]
}
- window.JSON
- window.JSON 是 ECMAScript 5 定义的一个原生的浏览器内置对象,用来检测对JSON的支持情况
- JSON 对象内置了 JSON.parse() 和 JSON.stringify() 方法
- 当HTML页面指定了 DOCTYPE 且浏览器模式为 IE8(包括)以上时,才支持内置的 window.JSON对象和支持 JSON.parse()函数方法。
11. 如何把JSON 格式的字符串转换为 JS 对象,如何把 JS对象转换为 JSON 格式的字符串?
- JSON对象的 stringify 和 parse 方法,这两个方法分别用于把 JavaScript 对象序列化为 JSON 字符串和把 JSON 字符串解析为原生 JavaScript 值.
var js = {
one: "one",
two: "two",
three: {
four: 4
}
};
var jsontext = JSON.stringify(js); //将JS对象序列化成JSON字符串
var jscopy = JSON.parse(jsontext); //将JSON字符串反序列化成JS对象
console.log(jsontext); //{"one":"one","two":"two","three":{"four":4}}
console.log(jscopy);
//{ one: "one",
// two: "two",
// three: {four: 4}
网友评论