[TOC]
## 对js认识
### 宿主对象:浏览器
### 特点
* 解释型的脚本语言,java以及c都是编译后执行,而js是程序运行中编译执行。如果中间报错,其他的语句就不会执行,通过try catch处理异常
* 与java一样,是基于对象的脚本语言。相关的研发工作也是这个思想为核心。
* 弱类型的语言,设计紧凑简单。
* 动态性,可以为网页增加动态性,属于事件驱动型,当触发相关事件时不需要经过浏览器单独处理。
* 跨平台型,不依赖于任何的操作系统,只需要一个浏览器作为载体处理。
## 语法组成部分
核心 (ECMAScript),包括了基本语法以及核心内置对象
文档对象模型(dom),包括了获取节点以及对文档样式,节点属性,绑定事件的相关操作
浏览器对象模型(bom),包括了浏览器的基本属性,以及对浏览器的相关操作。
### 核心语法
#### 词法结构
* js程序是用unicode字符集编写的
* js区分大小写,而html不区分大小写,所以注意
* 注释格式 :
~~~
单行注释://
多行注释:/* */
段落注释:
/*
* 这里是一段注释
* 这里的注释可以连写多行
*/
~~~
* 直接量 :程序中可以直接使用的值,例如字符串,数字,符号等
* 标识符:用于表明函数或者变量名称的,也可以用作某些语句的标记。js的标识符必须以字母、下划线、或者美元符号开始,而后续的字符可以为字母、数字、下划线、美元符号
* 保留字:js把一些标识符自己用,这些保留字不能当做标识符,下面是枚举的一些保留字。
> break,delete.function,return,typeof,case,do,if,switch,var,catch,else,in,this,void,continue,false,instanceof,throw,while,debugger,finally,new,true,with,default,for,null,try,class,const,enum,extends,import,super以及很多其他全局变量和函数(如Number ,String,RegExp,Array,Boolean,Error 等)
* 分号:js的语句结束标记为分号,较好的书写方式是语句所有的语句结束时都添加分号。需要注意的是,js并不是所有的换行都添加分号,而是在不添加就执行失败的情况下添加分号,所以有时候系统自动添加的效果不是我们需要的效果。为了避免意外,建议所有需要语句结束的位置,手动都加上分号。
* js 的数据类型:原始类型,对象类型。
> 原始类型:数字,字符串,布尔值,null,undefined.
> 对象类型:js中几乎所有的事物都是对象,与事物相关的值称为属性,能够在对象上执行的操作称为方法。常见的对象有String,Number,Boolean,数组,日期,函数,正则,math等等。
* 读取器 默认所有的属性都是可读可写的 (不详细讲解)
如果需要设置读写,那么通过getter 以及setter 方法单独设置 。
* 字符集,注释,直接量,标识符和保留字,可选的分号
* 类型(数字,文本,布尔值,null以及undefined,对象,类型转换),值(值引用),变量(变量声明以及作用域)
* 表达式和运算符(原始表达式,对象、数组、函数、属性访问的表达式,运算表达式,逻辑运算,数学运算,关系表达式,赋值表达式,算数符概述、其他运算符等)
* 语句(表达式语句,复合语句,声明语句,条件,分支,循环,跳转,其他语句)
* 对象(创建,属性使用与查询,序列化,对象方法,属性的设置,特殊属性)
* 数组,函数,类和模块,正则表达式,子集以及拓展
### 文档对象模型
* dom概述
* 选取元素
* 文档结构和遍历
* 属性
* 元素内容
* 节点相关操作
* 文档的几何形状和滚动
* html表单
* 其他特性
### bom
* 计时器,属于window对象的方法,全局函数,但对窗口没有什么操作。提醒的是,可以针对性的停止或者开启某个定时器;定义的相关语法是函数块或者字符串的函数名称(如果不加引号,是立刻执行的);匿名函数不用加引号。
* 浏览器的定位和导航,location 是window 的属性,也是一个对象
* window对象的history属性也是一个对象,可以记录浏览器的页面历史,并且进行相关的操作。history.api 的h5拓展。
* navigator ,包括浏览器的相关信息,包括浏览器全称,版本号,操作系统,用户代理(ua)。
* screen对象,窗口的相关属性,通常用到的有大小,比如媒体查询里所用的就是screen 的宽度。
* 对话框(dialog):alert(),confirm(),prompt(),比较复杂模拟对话框showModalDialog().备注:这些弹出框进行时,代码会堵塞。
* onerror,多窗体,窗口的打开关闭等,iframe等
- 前端入门
- 前端入职须知
- 前端自我定位
- pc与手机页面差别
- 前端书单
- 前端种子计划
- 前端技术栈
- ps
- ps入门阶段
- html
- html入门
- html代码规范
- meta
- table
- iframe
- a标签详解
- image
- html代码审查工具
- h5专题
- h5入门
- h5新增属性
- canvas画布教程
- audio/video
- Geolocation
- Websockets
- Web storage
- Communication
- Web Workers
- requestAnimationFrame
- css
- css入门必学
- css代码规范
- 项目字体规范
- css基本位置布局
- css常见样式命名规则
- css代码优化建议
- css常用样式名
- css选择器攻略
- css盒子模型的理解
- css属性继承与默认值
- css代码审查工具
- css中常见的知识盲区
- css3新特性浅谈
- css新特性了解
- border-radius
- background
- transform
- animation
- white-space
- css常用技术
- 文本两端对齐
- css之浮动解决方案
- css优化建议
- 文本超出省略
- img-sprites
- rem布局教程
- 水平居中&垂直居中
- 固宽&变宽布局
- 宽高固定比例的盒模型
- 样式预处理语言
- less教程
- sass教程
- postcss教程
- js
- javascript入门
- js代码规范
- js基础拓展
- js代码审查工具
- js性能优化
- js基本语句
- 基本运算
- 基本语句语法
- js对象
- es6入门
- obj
- Array
- Date
- String
- Boolean
- Number
- Json
- RegExp
- Math
- function
- jquery入门
- jq核心思想
- jq基本语法
- jq插件库汇总
- js常用技术
- break&continue区别
- js对日期转换
- js控制运动-move.js
- 原生js-cookie语法
- ajax请求后回调
- 表单数据序列化
- zepto
- zepto入门
- 百度touchjs
- js编程
- 插件库
- 功能性插件
- pdfjs
- wdatepicker
- qrcoder
- barcode插件
- photoviewer
- hammer.js
- echarts
- 交互组件
- layerjs
- java
- java入门
- java基本语句
- springMVC
- javaweb
- vm模板引擎
- freemarker
- maven教程
- mySql教程
- flex教程
- flex入门
- git教程
- git入门
- git分支
- git-tag管理
- git注意事项
- git-torise入门
- ide-git插件使用
- web
- web兼容
- web兼容思想
- pc端兼容适配文档
- pc端兼容bug汇总
- ie兼容bug汇总
- 手机兼容bug汇总
- web安全
- jeecms
- web存储
- app/h5组件
- 安卓教程
- ios教程
- 前端教程
- rubikx的教程
- 其他
- artTemplate
- tmod使用
- 跨域问题
- markdown教程
- 常用工具
- postman-api调试
- web常识
- 浏览器ua统计
- ui框架
- easyui
- bootstrap
- 入门推荐
- weui
- sui-pc
- sui-mobile
- layerUi