js概论

81 阅读2分钟

JavaScript的诞生

  • JavaScript(通常缩写为JS)是一种高级的、解释型的编程语言。
  • 网景公司由于开发需求,与Sun公司结成联盟。共同将JavaScript推入市场
  • 1995年5月网景公司指定Brendan Eich设计出一款“简化版Java”,十天后JavaScript出世。
  • JavaScript结合C语言,java,Self以及Scheme等编程语言的一些特点。是一门基于原型,头等函数的语言。支持面向对象程序设计,指令式编程以及函数式编程。
  • 1996年11月,网景正式向ECMA提交语言标准,次年六月发布第一款JavaScript标准规范ECMA-262。

JavaScript概论

  • 主要内容
    • ECMAScript,描述了该语言的语法和基本对象
    • 文档对象模型(DOM),描述处理网页内容的方法和接口
    • 浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口
  • 基本特点
    • 是一种解释性脚本语言(代码不进行预编译)
    • 主要用来向HTML页面添加交互行为。
    • 可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
  • 常用任务
    • 嵌入动态文本于HTML页面
    • 对浏览器事件作出响应
    • 读写HTML元素
    • 在数据被提交到服务器之前验证数据
    • 检测访客的浏览器信息
    • 控制cookie,包括创建和修改等

JavaScript的设计缺陷

-----摘抄阮一峰老师的博文《Javascript的10个设计缺陷》

  • 设计不够完善,设计过于仓促,无先例,过早标准化
  • null和undefined:null属于object,表示对象为空。undefined属于数据类型,表示未定义。
  • 加号运算符的界定性弱,若只有一方加数为字符串,那么另一方会被执行ToString,结果返回一个字符串。
     console.log(1+"10"); // "110"
     console.log("10"+1); // "101"
    
  • NaN表示超出解释器的极限,但并不好定义
  NaN === NaN; //false
  NaN !== NaN; //true
  console.log( 1 + NaN ); // NaN
  • ==和===:==用于判断值是否相等,===同时判断值和类型是否相等。(任何时候都推荐使用“===”)
 "" == "0" // false
  0 == "" // true
  0 == "0" // true
  false == "false" // false
  false == "0" // true
  false == undefined // false
  false == null // false
  null == undefined // true
  • JavaScript中函数的数据类型是object
  • JavaScript中数组也属于对象,因此要区分一个对象是否为数组十分麻烦。
  if ( arr &&
 typeof arr === 'object' &&
 typeof arr.length === 'number' &&
 !arr.propertyIsEnumerable('length'))
 {
 console.log("arr is an array");
 }