从0到1:JavaScript快速上手(笔记一)

从0到1:JavaScript快速上手

基础

1、动态页面和静态页面

  • 区别在于是否与服务器进行数据交互

2、JavaScript引入方式

  • HTML中引入JavaScript,一般有3种方式:

    • 外部JavaScript。

      • 使用script标签引入JavaScript
        <!DOCTPYE html>
        <html>
          <head>
              <meta charset="utf-8" />
                <title></title>
              <!--1.在head中引入-->
                <script src="index.js"></script>
            </head>
            <body>
                  <!--2.在body中引入-->
                <script src="index.js"></script>
            </body>
        </html>
      
      
  • 内部JavaScript。

    • <!DOCTYPE html>
      <html>
          <head>
              <meta charset="utf-8" />
              <title></title>
              <!-- 在 head 中引入 js -->
              <!-- 
                  <script type="text/javascript"> 完整形式
               -->
              <script>
                  // ...
              </script>
          </head>
          <body>
              <script>
                  // ...
              </script>
          </body>
      </html>
      
      
      
      
  • 元素事件JavaScript。

    • <!DOCTYPE html>
      <html>
          <head>
              <meta charset="utf-8">
              <title></title>
          </head>
          <body>
              <input type="button" value="一个小按钮" onclick="alert('元素事件属性中调用JS')" />
              
          </body>
      </html>
      
      <!DOCTYPE html>
      <html>
          <head>
              <meta charset="utf-8">
              <title></title>
              <script>
                  function alertMes()
                  {
                      alert("一个测试");
                  }
              </script>
          </head>
          <body>
              <input type="button" value="按钮" onclick="alertMes()" />
          </body>
      </html>
      

3、JS的小例子

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            window.onload = function()
            {
                alert("Welcome");
            }
            window.onbeforeunload = function(event)
            {
                // alert("test");
                // 功能不能实现...
                console.log("hahaha");
                var e=event || window.event;
                e.returnValue="see you again";
            }
        </script>
    </head>
</html>

4、语法

4.1关键字

JavaScript
null var catch for switch void continue
function this while default if throw
with delete in true do try
instanceof break else new typeof false
case
ECMA-262
abstract enum int short boolean export
interface static byte extends long super
char final native synchronized class float
package throws const goto private transient
debugger implement protected volatile double import
public
浏览器
alert eval location open array focus
math outerHeight blur funtion name parent
boolean history navigator parseFloat date image
number regExp document isNaN object status
escape length onLoad string

4.2 基本数据类型

  • 数字
    • 不区分“整型”和“浮点型”
  • 字符串
    • 用单引号或双引号括起来的。
  • 布尔值
    • true
    • false
  • 未定义值
    • var定义但是没有赋值的变量。
    • undefined 表示。
  • 空值
    • 空值: null
    • null: 表示系统没有给这个变量分配内存空间

4.3 引用数据类型

4.4 运算符

  • 算数运算符

    • 加法运算符
      • 字符串 + 数字 = 字符串
  • 赋值运算符

  • 比较运算符

  • 逻辑运算符

    • 逻辑运算符
      &&
      ` `
      !
  • 条件运算符

    • var a = 条件 ? 表达式1 : 表达式2

4.5 类型转换

  • 隐式类型转换
    • JavaScript自动进行的类型转换
  • 显示类型转化
    • “字符串” 转换为 “数字”
      • Number() 把“数字型字符串”转换为数字。
      • parseInt() parseFloat() 提取“首字母为数字的任意字符串”中的数字
    • “数字” 转换为 “字符串”
      • 与空字符串相加
      • toString()

4.6 转义字符

  • \' 英文单引号
  • \" 英文双引号
  • \n 换行符
    • document.write()中换行,用<br/>
    • alert() 中换行, 用 \n

4.7流程控制

  • 选择结构 if
  • 选择结构 switch
  • 循环结构
    • while
    • do...while
    • for

4.8 函数

  • 没有返回值的函数
function func_name(arg1, arg2)
{
}
  • 有返回值的函数
function func_name(arg1, arg2)
{
    return 111
}

4.9 全局变量和局部变量

  • 全局变量一般在主程序中定义,其有效范围是从定义开始,一直到整个程序结束。也就是全局变量在任何地方都可以使用
  • 局部变量一般在函数中定义,其有效范围只限于在函数中。也就是局部变量只能在函数中使用,函数之外是不能使用函数中定义的变量的

4.10 函数调用

调用方式:

  • 直接调用

    • 一般用于“没有返回值的函数”
  • 在表达式中调用

    • 一般用于“有返回值的函数”,函数的返回值参与表达式的计算。
  • 在超链接中调用

    • 在a元素的href属性中用javascrupt:func_name的形式来调用。

    • 当用户点击超链接时,就会调用该函数

    • <a href="javascript: func_name"></a>
      
    • <!DOCTYPE html>
      <html>
          <head>
              <meta charset="utf-8">
              <title>在超链接中调用函数</title>
              <script>
                  function expressMes () {
                      alert ("在超链接中调用函数")
                  }
              </script>
          </head>
          <body>
              <a href="javascript:expressMes ()">测试</a>
          </body>
      </html> 
      
  • 在事件中调用

4.11 嵌套函数

  • 在一个函数的内部定义另外一个函数
  • 在内部定义的函数只能在内部调用,如果在外部调用,就会出错
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            function func(a)
            {
                //嵌套函数定义,计算平方值的函数
                function multi(x)
                {
                    return x * x
                }
                var m = 1
                for (var i = 1; i <=multi(a); i++)
                {
                    m = m * i
                }

                return m
            }
            // 调用函数
            var sum = func(2) + func(3)
            document.write(sum)
        </script>
    </head>
    <body>

    </body>
</html>

4.12内置函数

函数 说明
parseInt() 提取字符串中的数字,只限提取整数
paserFloat() 提取字符串中的数字,可以提取小数
isFinite() 判断某一个数是否有一个有限数值
isNaN() 判断一个数是否是NaN值
escape() 对字符串进行编码
unescape() 对字符串进行解码
eval() 把y一个字符串当做一个表达式来执行

5 符串对象

5.1 字符串对象:String

  • 获取字符串长度
    • string.length
  • 大小写转换
    • string.toLowerCase()
    • string.toUpperCase()
  • 获取某一个字符
    • string.charAt(n)
  • 截取字符串
    • string.substring(start, end)
    • 截取的范围是[start, end)
  • 替换字符串
    • string.replace(源字符串, 替换字符串)
    • string.replace(正则表达式, 替换字符串)
  • 分割字符串
    • string.split('分隔符')
    • 分割符可以是一个字符、多个字符或一个正则表达式
    • 分割符不作为返回的数组元素的一部分
  • 检索字符串的位置
    • 找出“某个指定字符串”在字符串中“首次出现”的下标位置
      • string.indexOf('指定字符串')
      • match()
      • search()
    • 方法可以找出“某个指定字符串”在字符串中“最后出现”的下标位置
      • string.lastIndexOf('指定字符串')
    • 如果字符串中不包含“指定字符串” 返回-1
    • 支持单个字符检索

5.2 组对象

  • 创建
    • var arrayName = new Array(arg1, arg2, arg3) // 不推荐
    • var arrayName = [arg1, arg2, arg3] //推荐
  • 增加新的元素
    • ary[i] = arg_i
    • ary.push(arg_i, i)
  • 获取数组的长度
    • arrayName.length
  • 截取数组的某部分
    • arrayName.slice(start, end)
    • 取值范围是[start, end)
  • 添加数组元素
    • 在数组开头添加元素
      • arrayName.unshift(arg1, arg2, arg3)
    • 在数组结尾添加元素
      • arrayName.push(arg1, arg2, arg3)
  • 删除数组的元素
    • 删除数组中第一个元素
      • array.Name.shift()
      • shift()删除数组中的第一个元素,并且可以得到一个新的数组
    • 删除数组中最后一个元素
      • arrayName.pop()
      • pop()删除数组的最后一个元素,并且可以得到一个新数组
  • 比较数组元素大小(排序)
    • arrayName.sort(排序函数名)
    • “函数名”是定义数组元素排序的函数的名称。
  • 颠倒数组顺序
    • arrayName.reverse()
  • 将数组元素拼接成字符串
    • arrayName.join('连接符')

6. 时间对象

6.1 创建对象

var oDate = new Date()

6.2 获取时间的方法

方法 说明
getFullYear() 获取年份,取值为4位数字
getMonth() 获取月份,取值为0(一月)到11(十二月)之间的整数
getDate() 获取日数,取值为1-31的整数
getHours() 获取小时数,取值为0-23的整数
getMinutes() 获取分钟数,取值为0-59的整数
getSeconds() 获取秒数,取值为0-59的整数
  • 获取年月日

    • var myDate = new Date()
      var year = myDate.getFullYear()
      var month = myDate.getMonth() + 1 // 返回值范围在0-11
      var day = myDate.getDate()
      
  • 获取时分秒

    • var myDate = new Date()
      var mHour = myDate.getHours()
      var mMinutes = myDate.getMinutes()
      var mSeconds = myDate.getSeconds()
      
  • 获取星期几

    • var mDate = new Date()
      mDate.getDay()
      
  • 6.3 设置时间的方法

    方法 说明
    setFullYear() 可以设置年、月、日
    setMonth() 可以设置月、日
    setDate() 可以设置日
    setHours() 可以设置时、分、秒、毫秒
    setMinutes() 可以设置分、秒、毫秒
    setSeconds() 可以设置秒、毫秒
  • 设置年月日

    • var mDate = new Date()
      mDate.setYears(1999, 11, 8) //设置年、月、日 1999年12月8日
      // year 是必选参数 4位整数
      // month 是可选参数 0-11
      // day 是可选参数 1-31
      mDate.setMonth(11, 8) // 设置月、日
      mDate.setDate(8) // 设置日期
      
  • 设置时分秒

    • var mDate = new Date()
      mDate.setHours(23, 14, 34, 299) //设置 时、分、秒、毫米
      // hour 是必选参数,0-23
      // min 是可选参数,0-59
      // sec 是可选参数,0-59
      // millisec 是可选参数,0-999 
      mDate.setMinutes(14,34,299) //设置 分,秒,毫秒
      mDate.setSeconds(34, 299) // 设置秒,毫秒
      
      
      

7. 数学对象

  • 属性
属性 说明
PI 圆周率
LN2 2的自然对数
LN10 10的自然对数
LOG2E 以2为底,e的对数
LOG10E 以10为底,e的对数
SORT2 2的平方根
SORT1_2 2的平方根的倒数
  • 方法

    方法 说明
    max(a,b,...) 返回一组数中的最大值
    min(a,b,...) 返回一组数中的最小值
    sin(x) 正弦
    cos(x) 余弦
    tan(x) 正切
    asin(x) 反正切
    acos(x) 反余切
    atan(x) 反正切
    atan2(x) 反正切
    floor(x) 向下取整
    ceil(x) 向上取整
    random() 生成随机数
    abs(x) 返回x的绝对值
    sqrt(x) 返回x的平方根
    log(x) 返回x的自然对数(底为e)
    pow(x,y) 返回x的y次幂
    exp(x) 返回e的指数

7.1 最大值与最小值

Math.max()a,b,c,...,n)

Math.min()a,b,c,...,n)

7.2 取整

Math.floor(x) // 向下取整
Math.ceil(x) // 向上取整

7.3 三角函数

Math.sin(x)其中x表示角度值,用弧度来表示。常用形式为度数 * Math.PI / 180

atan2(x)atan(x)是不一样的,atan2(x)能够精确判断角度对应哪一个角,而atan(x)不能。在高级动画开发中,使用atan2(x)更多。

7.4 生成随机数

Math.random()
//生成0-1,但不包含1的随机数
Math.random() * m
//生成0-m, 但不包含m的随机数
Math.random() * m + n
//生成n-'m+n',但不包含'm + n'的随机数
Math.random() * m - m
// 生成-m - 0 的随机数。
Math.floor(Math.random() * (m + 1))
// 生成0 - m 之间的随机整数

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容