javascript入门

(纪录lvyestudy的js教程关键点)

基础部分

1.开始部分

  • 调用js的方式分为直接夹<script>,还有为script使用src 调用本地或者网络的.js类型文件
  • 使用alert弹出对话框 其中("")夹要弹出的内容,这里是字符串,如果是变量不需要引号,实际上alert其中也有类型转换的存在。
  • 现代模式不明 use strict 暂时只看到规范书写的作用

2.变量

  • 使用let创建变量,老版本中使用var(其中还有差别),正常情况下用=赋值,变量名字区分大小写,不能数字开头。也可以用$和_但不能使用-,注意避免保留字。
  • 使用const定义不改变的量,但形式依旧是const = "#00FF",不可缺少引号。
  • 中文也可使用,但是不建议使用。

3.数据类型

  • js中数学计算报错也是NaN,可以安全进行计算,也使用let进行定义,bigint用于2的53次方以上的数字。
  • string必须要放在引号中,js中无char,字符字符串都可使用,反引号中使用`ex:${..}`进行功能扩展。
  • 对 typeof x 的调用会以字符串的形式返回数据类型。
  • 用number对类型进行转换,转换为数值类型。

4.运算符

  • 运算元即运算符应用的对象,如果是-1这种负号即是一元运算符,3x5x即是二元运算符。加号也可用于字符串连接。针对二元运算符的计算中,有一个字符串类型其余会转换成字符串类型。一元运算符优先级最高,赋值运算符优先级最低。

5.类型转换

  • parseInt和parseFloat这两种方法分别是转换为整型和浮点型,.toString()转换为字符型,这里.放在变量后。

6.基本语法

  • 注意每一句加分号以及注释方式://单行注释内容/多行注释内容/

流程控制

  1. 三个基本结构:顺序结构、选择结构、循环结构。
  • 选择结构
    选择结构采用,if和switch此种,惯用if不多介绍就是基本的if else用法。
    switch也是惯用的代码形式:
{
    case 取值1:
        语块1;break;
    case 取值2:
        语块3;break;
    ……
    case 取值n:
        语块n;break;
    default:
        语句块n+1;
}
  • 循环结构也是:for、while、do..while;不多说dowhile也是先执行一遍而while是先判断。
  1. 跳转语句
    break语句与continue语句的主要区别是:break是彻底结束循环,而continue是结束本次循环。

基本函数

  • 基本定义调用function,大体框架也是C语言类似写法。eval()函数可以把一个字符串当做一个JavaScript表达式一样去执行它。isFinite()函数用来确定某一个数是否是一个有限数值。使用isNaN()函数来判断一个值是否是NaN值。
  • escape() 和unescape()一个把特殊符号转%..形式编码代替,un的功能则是反过来

字符串对象

  • 字符串属性变量名.length求得字符串长度。
  1. 方法:match、search、replace、indexOf、charAt
  • match()方法就是用来检索一个字符串是否存在。如果存在的话,返回要检索的字符串;如果不存在的话,返回null。
  • search()方法返回的是子字符串的起始位置,如果没有找到任何匹配的子串,则返回-1。检索从0开始。
  • indexOf也是返回首次出现位置,至于和search的区别牵扯到后面的正则表达式的问题。以下是网页相关结果:

首先要明确search()的参数必须是正则表达式,而indexOf()的参数只是普通字符串。indexOf()是比search()更加底层的方法。
如果只是对一个具体字符串来查找,那么使用indexOf()的系统资源消耗更小,效率更高;如果是查找具有某些特征的字符串(比如查找以a开头,后面是数字的字符串),那么indexOf()就无能为力,必须要使用正则表达式和search()方法了。很多时候用indexOf()不是为了真的想知道子字符串的位置,而是想知道长字符串中没有包含这个子字符串。如果返回索引值是-1,那么说明没有:不等于-1,那么就是有。所以一般情况下indexOf比search更省资源。

  • replace方法stringObject.replace(正则表达式,替换字符)用于字符串的替换。
  • charAt()方法,同Java中获取字符,也是从0开始找。
  1. 其余方法
  • 大小写转换使用toLowerCase()和toUpperCase()这两种方法来转化字符串。
  • 字符串连接:字符串1.concat(字符串2,字符串3,…,字符串n);
  • localeCompare()方法用本地特定的顺序来比较两个字符串,比较完成后,返回值是一个数字。大则返回1,等于则返回0,否则返回-1。
  • 使用split()方法把一个字符串分割成字符串数组,框内是分割符,分割符并不作为返回数组元素的一部分
  • 使用substring()方法来提取字符串中的某一部分字符串,字符串.substring(开始位置,结束位置)

日期对象

  • 创建:var 日期对象名 = new Date();
  • 甚至不用创建对象直接使用Date()方法返回系统当前日期时间,非常简便。
  • 后续返回年月日,使用年:getFullYear() 月:getMonth()这里月注意从0开始 日:getDate(),get改为set则变为设置年月日。
  • 返回时分秒,使用:getHours()、getMinutes()、getSeconds(),同样设置改为set进行设置。
  • 日期对象通过.toString()进行转换成字符串的操作,使用toUTCString()方法可根据世界时间(UTC)把Date对象转换为字符串,toLocalString()方法把本地时间转换成字符串。
  • 使用getUTCDay()方法可以根据世界时间(UTC)返回表示星期几的一个数字。

数组对象

  1. 基本内容
  • 创建方式 var myarray = new array(),基本使用方式即正常数组方式,有一点不同于编译语言中的是js的弱类型,所以数组中存放的类型并没有严格的定义,甚至可以每一个数组元素类型都不同。
  1. 常用方法
  • slice()第一个输入为开始位,第二个为结束位(取不到),用于字符串剪切。
  • unshift(),在开头插入数组元素。
  • shift()在开头删除数组元素。
  • push()数组元素尾部插入。
  • pop() 数组元素尾部删除。
  • to.String()join()在数组中区别在于join方法中可输入分割符号在每个元素间隔中连接字符串,而to.String()仅仅在数组用于转换字符串。
  • concat()用于数组的连接。
  • sort()用于正向排序而reserve()用于反向排序。

数值对象

  1. 基本内容
  • 分为两种,Math和Number两类,Number入门中用的不多。这里主要考虑Math类,Math不需要进行对象创建直接调用即可,比如PI、E、LOG10E1等基本数学值。
  1. 常用数学类方法
  • max求最大,min求最小,pow(x,y)返回x的y次幂,abs返回绝对值,round取整,random求0到1的随机数,最后注意ceil取大于等于的数,floor取小于等于的数。

窗口对象

  1. 基本概念
  • 这里窗口对象正式进入了js的核心技术部分,实际上是对浏览器窗口的操作,入门时暂时不考虑属性问题,在方法进行入门。
  1. 常用方法
  • 对象.open/close()可创建function专门用于打开关闭窗口,在新窗口创建指定的对象可控制所指向窗口的关闭。同时在input标签中也可直接调用window.close关闭当前窗口。
  • resizeTo()和resizeBy()其中to用于调整至指定大小,而by用于调整变化的数值,有两个单位为px的输入值,输入的第一个为水平方向第二个为垂直方向。
  • moveTo() moveBy()也是同上作用,不过用于窗口的移动。
  • window的子对象history用于前进forward和后退back,实际场景中有测试,注意并不是分页效果而是浏览器历史的进退。还有指定地址go方法,history的属性运用的较少。
  • 定时器在很多地方进行使用,后续配合有很多,定时器:setTimeout()方法内的代码只会执行一次,而setInterval()方法内的代码会重复性执行。setInterval()要用clearInterval()进行结束计时。

对话框

  • 这里对话框应用包括三个:alert、confirm、prompt。
  • alert()弹出框使用,其中也可调入变量或者换行等。
  • confirm()弹出选择,返回的是个布尔类型,如果用户点击“确定”,则confirm()返回true。如果用户点击“取消”按钮,则confirm()返回false。confirm()方法往往都是和按钮结合使用。
  • prompt()方法对话框用于输入并返回用户输入的字符串

文档对象

文档对象是window对象的子对象,目的在于操作html文档(相关:CSS文档流)。接下来列出常用的属性等。

  1. 文档对象属性
  • .title属性,用于最顶上的页面的标题名(不是页面最顶上是窗口上的)。

fileCreateDate 文档创建日期
fileModifiedDate 文档修改时间(精确到天)
lastModified 文档修改时间(精确到秒)
fileSize 文档大小

  • .URL地址属性来获取当前HTML文档地址或者设置文档的跳转地址。
  • .fgcolor前景色(即背景前的比如字的颜色)、.bgcolor背景色 ,关于超链接:未被点击的连接linkcolor、alinkcolor被激活连接、vlinkcolor被访问过的颜色。这里一般应用css中的a类中的四种:link、visited、active、hover。
  1. 文件对象方法
  • 输出内容document.write("输出的内容")非常常用,writeln()则为自动换行

DOM对象 *

  1. 简介
    全称“Document Object Model(文档对象模型)”,DOM就是一个接口,我们可以通过DOM来操作页面中各种元素。DOM树形结构即树状分父子节点,DOM节点操作非常基本注意掌握。
  2. 基本操作
  • getElementById()以元素id选中,然后对其进行DOM对象的相关操作,还有一种getElementByName()这种用的比较少因为name重复率较高。

  • 创建节点的思想基本是OOP思想,就是创造一个元素creatElement()或者文本对象creatTextNode()进行一系列的操作,然后对象插入使用appendChild()。在DOM中,每一个元素节点都被看做一个对象,因此我们可以像操作对象的属性那样给元素节点的属性赋值。
    例子:

var e = document.createElement("h1");
var txt = document.createTextNode("绿叶学习网");
e.appendChild(txt);    //把元素内容插入元素中去
document.body.appendChild(e); 

不同于appendChild()插入对象的内部,insertBefore()则是插入当前对象的“末尾”。insertBefore()有两个输入参数,所依靠的对象是父节点,第一个输入是创建的新节点,第二个输入是表明在这个节点之前插入。

  • 结点删除操作:obj.removeChild(oldChild);obj是父节点,oldChild是其中子节点,若要删除整个父节点内容则直接调用父节点。
  • 节点复制obj.cloneNode(bool)这里布尔类型中1代表示复制节点本身以及复制该节点下的所有子节点,而0代表仅仅复制此节点不复制子节点。
  • 节点替换obj.replaceChild(new,old)obj是要被替换的父节点,new是替换的新节点,old是被替换的节点。注意替换时一定要注意找到被替换的父节点。
  • innerHTML区别于innerText前者返回包含的子元素,后者只返回文本,且后者不被FIREFOX支持。
  • 另外关于CSS,在JavaScript中,对于元素的CSS操作,我们使用的是DOM对象中的style对象来操作。

JavaScript事件

  1. 基本内容
    事件理解为用户对页面操作后,页面的一些行为。事件有两种调用方式:第一是在script标签中调用,二是在元素内部调用。一般是抽象一个元素后,通过所抽象的对象方法操作来实现一系列的效果。JavaScript是基于事件模型的语言。JavaScript事件,这可是JavaScript的精髓所在,也是JavaScript入门学习中的重中之重!

  2. 常用方法

  • 鼠标事件,鼠标事件都以on开头,如onclick即点击后产生的效果。鼠标移入和移出事件分别是onmouseoveronmouseout,鼠标的按下和松开事件分别是onmousedownonmouseup
  • JavaScript事件通过以下3个事件来捕获键盘事件:onkeydown、onkeypress与onkeyup。这三个事件的执行顺序如下:onkeydown → onkeypress → onkeyup,即键盘按下、按住、松开。其中onkeypress只对数字和字母有效,对功能键无效。某些方面按下onkeydown基本和onkeypress差不多。
  • 表单事件:onfocus表示获取焦点触发的事件,onblur表示失去焦点触发的事件。比如文本框输入时,如果光标不在即有文字提示那就是失去焦点事件。
    对表单的更改即按下松开有onchange,onselect事件的具体过程是从鼠标按键被按下,到鼠标开始移动并选中内容的过程,这个过程并不包括鼠标键的放开,注意两者的效果区分在一个触发点上有不同。
  • 编辑事件:禁止复制通过调用oncopy方法建立function再返回false就无法进行复制。同样有onpaste、oncut。其中onbefore未搞懂到底在什么之前,代码不可行。
  • 页面相关事件:
    onload这里出现个问题,js的代码时从上到下执行,若script在之前,对象对应的元素在后,有可能会报错,这里就要使用window.onload套一个函数,跳过执行部分,并且一般函数也不会从上到下先执行,他会先跳过。其余常用的两个有:onsize可以固定页面大小,onerror可以报错时的操作。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容

  • 第1章 认识JS JavaScript能做什么?1.增强页面动态效果(如:下拉菜单、图片轮播、信息滚动等)2.实现...
    mo默22阅读 1,288评论 0 5
  • 一、JS前言 (1)认识JS 也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HT...
    凛0_0阅读 2,770评论 0 8
  • 本文是大神廖雪峰的JavaScript教程学习笔记。并不是教程,如有需要,请前往廖雪峰大神大博客. 一、数据类型和...
    0o冻僵的企鹅o0阅读 447评论 0 4
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,197评论 0 3
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,233评论 0 4