一,javascript 历史。
  netscape -> 浏览器。 -> livescript
  微软 -> jscript

  netscape -> ecma 组织 -> ecma - 262标准。

  java 语言 -> ecmascript -> javascript。

  javascript 和 java 没有半毛钱关系。

二,js 都干什么。
  1. 表单验证。
  2. 加特效。
  3. 书写 ajax,无刷新地请求数据库。

三,怎么去学习。
  1. ecmascript,基本语法。
  2. BOM,浏览器对象模型(兼容性问题)。
  3. DOM,文档对象模型。

四,js 特点。
  1. 浏览器脚本语言。
  2. 跨平台。
  3. 安全。
  4. 兼容性不好。

五,基本语法。
  1,js 书写场景。
    (1) 写在 事件属性里。

<div onclick="alert('123');" style="width:100px; height: 100px;background: #f00"></div>

    (2) 写在 script 标签里。

<script type="text/javascript">

        alert('你好');

</script>

    (3) 写在 外部文件里。

      注:当使用script标签的src属性时,script标签中一定不能放入任何JS代码。

<script type="text/javascript" src="./1.js"></script>

    (4) 写在 a 链接 href 属性里。

<a href="javascript:alert('百度');">百度</a>

  2. js 变量。
    字母数字下划线($),不能以数字开头,严格区分大小写,不能使用关键字。

  3. js 注释
    (1) //
    (2) /* */

  4. 分隔符。
    (1) ; 可有可无,但推荐加上,可以压缩。

    (2) 不加;可用换行代替

  5. js 数据类型。
    6种。
    (1)boolean

    (2)string

      ① 单引号和双引号均可解析转义字符
      ② 单引号和双引号均不能解析变量
      ③ 变量与字符串、变量与变量要使用+来连接。
      ④ 单引号和双引号可以互相嵌套,如果单引号中要嵌套单引号,需要将单引号转义,同理,双引号相同

    (3)object

    (4)function

    (5)undefined

    (6)number

      注意:永远不要测试某个特定的浮点数的值!   

      NaN的特点:
        1.任何涉及NaN的操作,结果都为NaN
        2.NaN与任何值都不相等,包括NaN本身

    使用 typeof 检测出来的只有这6种。

    万物皆空。null 类型。

  6. js 数据类型转换。
    (1) 强制类型转换
      ① parseInt()

        A.忽略字符串前空格,直接找到第一个非空格字符

        B.第一个字符不是数字或负号,返回NaN。

        C.空字符串,返回NaN。

        D.第一个字符是数字,会继续解析,知道解析完或遇到第一个非数字字符

      ② parseFloat()

        1.第一个小数点是有效的,第二个小数点无效
        2.始终忽略前面的0,不分进制数
        3.十六进制会被转换成0
        4.空字符串转换为NaN

      ③ Number()  

        A.如果是布尔值,true和false将分别转换为1和0
        B.如果是数字值,只是简单的传入和返回
        C.如果是null,返回0
        D.如果undefined,返回NaN
        E.如果是字符串,遵循下列规则:
          a. “11”会变成11,“011”会变成11
          b.“1.1”会变成1.1
          c.“0xf”会变成相同大小的十进制整数值
          d. 如果字符串是空的,则将其转换为0
          e. 如果字符串包含除上述格式之外的字符,则将其转换成NaN

      ④ String()

      ⑤ Boolean()

    (2) 自动类型转换
      计算
      if() //0,0.0,false,'',null,undefined

  7. 运算符。
    算术
    字符串
    赋
    比较
    逻辑
    位
    其他
  8. 流程控制,循环,控制。
    if
    switch
    while
    do... while
    for

    九九乘法表。

  10. 函数
    (1)函数声明:
      ① 函数语句:function 函数名(){}
      ② 函数表达式:var func = function(){}
      ③ 构造函数:var func = new Function("函数体");
    (2)函数参数:
      function func(a, b, c)// 不要给默认值。    

      ① JavaScript中的函数不允许给参数赋初始值
      ② 传递的参数个数与函数定义的参数个数不匹配时:
        a.如果传递的参数个数小于函数定义的参数个数,JavaScript会自动将多余的参数值设为undefined;
        b.如果传递的参数个数大于函数定义的参数个数,那么多余传递的参数将会被忽略掉。

      ③判断传递的函数参数的个数
        可以使用arguments.length
      ④获得实际传递参数的值
        for(var i=0;i<arguments.length;i++){
          alert(arguments[i]);
        }

    (3)函数返回值:
      如果没有 return 默认返回 undefined
    (4)作用域:       

      ① 变量的优先级
        如果在函数体里定义了一个与全局变量名相同的局部变量,那么在该函数体里全局变量将不起作用,就相当于全局变量并不存在。
      ② 在函数体内定义全局变量
        在函数体内使用var关键字定义的变量为局部变量,如果要在函数体内定义全局变量,则不能使用var关键字,只需要直接给变量赋值即可。
      ③ 嵌套函数体中的变量的范围
        在JavaScript中的函数是可以嵌套的,每个嵌套函数中的变量都可以在该函数体内,以及嵌套的函数体内起作用,但不能在父级或父级以上的函数体内起作用。
      ④ 局部变量在整个函数体内都有效
        JavaScript只要在函数体内定义了局部变量,该局部变量就会在整个函数体内有效,而不是从定义局部变量的那行代码开始起效。

      常用的函数。
        eval

          eval()函数是使用得比较多的一个函数,该函数的作用是将字符串指定为对象。
        escape

          escape()函数的作用是将字符串中的非文字、数字的字符,如#,$,%,^,&,空格,括号等,转换成相应的ASCII值。主要用在字符串的处理上,用于保证这些特殊字符不会干扰到字符串的处理。
        unescape

          unescape()函数的作用是将ASCII码的文字转换成一般文字。

  11. 对象
    对象声明:
      new Object();
      {}
      构造方法。new Girl(name,age);
    对象的属性操作
      .
        o.name = 'zs';
        delete o.name;
        o.name = 'ls';
        o.name;

      []
        o['name'] = 'zs';
        delete o['name'];
        o['name'] = 'ls';
        o['name'];

      var str = 'height';
      o[str] = '180cm';
    对象的方法操作。
      o.sing();
      o['sing']();

      json,一种通用的数据容器(格式)。

<script type="text/javascript">

    // json是一个通用数据容器。

    var obj = {
'name':'张三',
'age':18,
'sing':function()
{
alert('sing');
},
dance:function()
{
alert('dance');
}
}; </script>

      for in

var obj = {
'name':'zs',
'age':'ls',
'height':'180cm'
}; for( i in obj)
{
console.log(i);
console.log(obj[i]);
}

  12. with
    简化操作。但是效率低下。

五,内置对象
  布尔对象,字符串对象,数组对象,日期对象,数学对象,正则对象...

  布尔对象,

    字符串对象,
    属性:
      length
    方法:
      查手册。
      trim();这是浏览器帮你添加的一个方法,不是标准的。

      永远是返回一个新的字符串。

  数组对象
    属性:
      length
    方法:
      查手册。

  日期对象。
    // 获取年月日时分秒。

 //一个获取当前时间日期的实例
// 1. 获取元素。
var did = document.getElementById('did'); // 入口。
run(); // 4. 设置定时器。
setInterval(function(){ run(); }, 1000); // 封装函数。
function run()
{
var d = new Date(); // 2017-5-12 10:14:27 // 获取年,月,日,时,分,秒。
var y = d.getYear();
var y = d.getFullYear();
var m = d.getMonth() + 1;
var dd = d.getDate();
var h = d.getHours();
var mm = d.getMinutes();
var s = d.getSeconds(); // console.log(d);
// console.log(y);
// console.log(m);
// console.log(dd);
// console.log(h);
// console.log(mm);
// console.log(s); if(s < 10)
{
s = '0' + s;
} if(mm < 10)
{
mm = '0' + mm;
} if(h < 10)
{
h = '0' + h;
} var str = y + '-' + m + '-' + dd + ' ' + h + ':' + mm + ':' + s;
// document.write(str); // 2. 添加样式。
did.style.width = '200px';
did.style.height = '200px';
did.style.backgroundColor = 'yellow'; // 3. 写入时间字符串。
did.innerHTML = str;
}

  数学对象
    是一个静态对象。
    Math.PI
    查手册。
  随机数
    获取 m -n 之间的随机数。
    Math.ceil(Math.random()* (n - m + 1)) + m -1 ;

【JavaScript】js01的更多相关文章

  1. 【javascript】html5中使用canvas编写头像上传截取功能

    [javascript]html5中使用canvas编写头像上传截取功能 本人对canvas很是喜欢,于是想仿照新浪微博头像上传功能(前端使用canvas) 本程序目前在谷歌浏览器和火狐浏览器测试可用 ...

  2. 【JavaScript】出现即使设置了ID也获取不到的可能原因与window.onload

    有时候.在JavaScript中.即使设置了ID也有可能出现document.getElementById()获取不到的情况,然后你就開始想document是否写错之类的.事实上根本就不是你的代码的大 ...

  3. 【JavaScript】我的JavaScript技术总结第一篇——编程细节

    遍历数组 for (var i=0, l=arr.length; i<l; i++) 这样写的一个好处就是让每次循环少一步获取数组对象长度的操作,数组长度越长,价值越明显. 判断变量的真假 if ...

  4. 【JavaScript】下大雪

    引用[JavaScript]满天星的代码,稍作修改的结果: function drawStars() { for (i = 1; i < 100; ++i) { ctx.fillText(&qu ...

  5. 【JavaScript】JavaScript中的replaceAll

    JavaScript中是没有replaceAll的.仅仅有replace,replace仅仅能替换字符中的第一个字符.并且这个replace里面不支持正則表達式,以达到replaceAll的目的. 只 ...

  6. 【JavaScript】Leetcode每日一题-在D天内送包裹的能力

    [JavaScript]Leetcode每日一题-在D天内送包裹的能力 [题目描述] 传送带上的包裹必须在 D 天内从一个港口运送到另一个港口. 传送带上的第 i 个包裹的重量为 weights[i] ...

  7. 【JavaScript】Leetcode每日一题-青蛙过河

    [JavaScript]Leetcode每日一题-青蛙过河 [题目描述] 一只青蛙想要过河. 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有). 青蛙可以跳上石子 ...

  8. 【JavaScript】Leetcode每日一题-平方数之和

    [JavaScript]Leetcode每日一题-平方数之和 [题目描述] 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 示例1: 输入:c = 5 ...

  9. 【JavaScript】Leetcode每日一题-二叉搜索树的范围和

    [JavaScript]Leetcode每日一题-二叉搜索树的范围和 [题目描述] 给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和. 示例1: 输入: ...

随机推荐

  1. C语言程序设计(八) 数组

    第八章 数组 //L8-1 #include <stdio.h> int main() { int score1, score2, score3, score4, score5; int ...

  2. redis作为消息队列的原理

    Redis队列功能介绍 List 转:https://blog.csdn.net/cestlavieqiang/article/details/84197736 常用命令: Blpop删除,并获得该列 ...

  3. 如何使用Logstash

    目录 一.什么是Logstash 二.如何安装 三.快速使用 四.Input输入插件 五.codec编码插件 六.filter过滤器插件 七.output输出插件 八.总结 一.什么是Logstash ...

  4. STM32 初学不知道外设对应的APB1还是APB2

    STM32参考手册搜索“系统架构”或者“系统结构”,即可查看外设挂在哪个时钟下,也就知道开启哪个时钟了.

  5. 036.集群网络-K8S网络模型及Linux基础网络

    一 Kubernetes网络模型概述 1.1 Kubernetes网络模型 Kubernetes网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址,并假定所有Pod都在一个可以直接连通的 ...

  6. maven中的pom配置文件一——spring,mybatis,oracle,jstl,json,文件上传

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  7. Natas2 Writeup(水平越权)

    Natas2: 查看源码,发现页面隐藏了一个图片的连接,分析图片,无隐写内容,联想到目录权限问题,访问同级目录http://natas2.natas.labs.overthewire.org/file ...

  8. ArrayList,HashSet,SortedSet之间的区别是什么?

    今天看Redis官方案例,出现了列表和集合概念,列表在Java中指的就是List,集合在Java中指的就是Set,那么怎么实现列表和集合,以及它们有什么区别呢? 我写了个Demo演示下: import ...

  9. vscode回车补全代码

    VsCode设置回车补全代码而不换行 有一部分人不习惯用tab键补全代码,我就是其中之一,习惯了回车补全的我决定设置一波,网上找了很多, 没找到比较详细的,所以自己写一个 有一个叫keybinding ...

  10. 手把手教你用java实现syslog消息的收发,学不会你打我喽!

    大家好,我是道哥,专注于后端java开发,喜欢写作和分享.如果觉得文章对你有用,那就点个赞呗!如果能转发那是对道哥最大的支持! syslog的定义 见文知义,syslog,从英文名字上可以看出是指系统 ...