liugang 发布的文章


// 泛型
function identity<T>(arg: T): T {
  return arg;
}
let result1 = identity<string>("str");
let result2 = identity("str");
let result3 = identity(123)
let result4 = identity(false)

// 元组
function swap<T, U>(tuple: [T, U]): [U, T] {
  return [tuple[1], tuple[0]]
}
let arr1 = swap<string, number>(['str', 1])
let arr2 = swap(['str', 1])
let arr3 = swap([1, 'str'])

// 数组
function echoWithArr<T>(arg: T[]): T[] {
  return arg
}

let arr4 = echoWithArr<string>(['str1', 'str2'])
let arr5 = echoWithArr<number>([1, 2])
let arr6 = echoWithArr<number | string>([1, 'str'])
let arr7 = echoWithArr([1, 2])
let arr8 = echoWithArr(['str1', 'str2'])
let arr9 = echoWithArr([1, 'str'])

// 属性约束
interface IwithLength {
  length: number
}

function echoWithLength<T extends IwithLength>(arg: T): T {
  console.log(arg.length)
  return arg
}

let str1 = echoWithLength('str')
let obj1 = echoWithLength({ length: 10 })
let arr10 = echoWithLength([1, 2, 3, 4])

// 类
class Queue<T> {
  private data = [];
  push(item: T) {
    return this.data.push(item)
  }
  pop(): T {
    return this.data.shift()
  }
}

const queue1 = new Queue<number>()
const queue2 = new Queue<string>()

// 接口
interface KeyPair<T, U> {
  key: T
  value: U
}

let kp1: KeyPair<number, string> = { key: 1, value: "str" }
let kp2: KeyPair<string, number> = { key: "str", value: 1 }
let arr11: Array<number> = [1, 2, 3]
let arr12: Array<string> = ['s1', 's2', 's3']

先看下面两段代码

<div>标题</div>
<div>
    <div>一段文字</div>
    <div>
        <div>列表1</div>
        <div>列表2</div>
    </div>
</div>

html语义化代码

<h1>标题</h1>
<div>
    <p>一段文字</p>
    <ul>
        <li>列表1</li>
        <li>列表2</li>
    </ul>
</div>

HTML语义化的好处?

  1. 让人更容易读懂(增加代码可读性)
  2. 让搜索引擎更容易读懂(SEO)
    搜索引擎根据第一段代码分不清重点,机器只认识标签

        // 实现字符串长度截
        function cutstr(str, len) {
            var temp;
            var icount = 0;
            var patrn = /[^\x00-\xff]/;
            var strre = "";
            for (var i = 0; i < str.length; i++) {
                if (icount < len - 1) {
                    temp = str.substr(i, 1);
                    if (patrn.exec(temp) == null) {
                        icount = icount + 1
                    } else {
                        icount = icount + 2
                    }
                    strre += temp
                } else {
                    break
                }
            }
            return strre + "..."
        }

JS是JavaScript的简称,JavaScript 是一门用来与网页交互的脚本语言。

1995 年,JavaScript 问世。当时,它的主要用途是代替 Perl 等服务器端语言处理输入验证。在此之前,要验证某个必填字段是否已填写,或者某个输入的值是否有效,需要与服务器的一次往返通信。网景公司希望通过在其 Navigator 浏览器中加入 JavaScript 来改变这个局面。在那个普遍通过电话拨号上网的年代,由客户端处理某些基本的验证是让人兴奋的新功能。缓慢的网速让页面每次刷新都考验着人们的耐心。
从那时起,JavaScript 逐渐成为市面上所有主流浏览器的标配。如今,JavaScript 的应用也不再局限于数据验证,而是渗透到浏览器窗口及其内容的方方面面。JavaScript 已被公认为主流的编程语言,能够实现复杂的计算与交互,包括闭包、匿名(lambda)函数,甚至元编程等特性。不仅是桌面浏览器,手机浏览器和屏幕阅读器也支持 JavaScript,其重要性可见一斑。就连拥有自家客户端脚本语言 VBScript的微软公司,也在其 Internet Explorer(以下简称 IE)浏览器最初的版本中包含了自己的 JavaScript 实现。从简单的输入验证脚本到强大的编程语言,JavaScript 的崛起没有任何人预测到。它很简单,学会用只要几分钟;它又很复杂,掌握它要很多年。要真正学好用好 JavaScript,理解其本质、历史及局限性是非常重要的。