JavaScript学习笔记(二)

JavaScript数据类型

在 JavaScript 中的数据类型:
string(字符串)、number(数字,NaN也属于其)、Boolean(逻辑)、object(对象,包括Object,Array<数组>,Date<日期>,null<空对象>)、function(函数)、、undefined(未设置)
ps:JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型


  • 声明变量类型
    当声明新变量时,可以使用关键词 "new" 来声明其类型:
    var y= new Boolean;
  • typeof 操作符:用于返回变量或表达式类型
    null与undefined:均表示什么都没有,且都可以用来清空变量;null类型为object,undefined类型为undefined
  • constructor属性:返回所有变量的构造
    "john".constructor 得到
    function String() { [native code] }
    因此可以用来判断typeof无法判断区分的Array和Date:
    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    document.getElementById("demo").innerHTML = isArray(fruits);
    function isArray(myArray) {
    return myArray.constructor.toString().indexOf("Array") > -1;
    }
    个人目前理解的是:可以用isArray()判断是否为数组,而该函数的代码块是以constructor为核心的。
JavaScript 类型转换

方法:1.通过使用 JavaScript 函数;2.通过 JavaScript 自身自动转换

  • 转化为字符串:
  1. String(x),适用于任何类型的数字,字母,变量,表达式
  2. x.toString Boolean和Date()也适用,其他不清楚
  • 转化为数字
    Number()
  • 字符串转化为数字,包含数字转化为数字,空字符转化为0,其他字符(如"99 88")转化为NaN(不是个数字)
  • Boolean中true转化为1,false转化为0
  • 日期转化为数字
    d = new Date(); 法一
    Number(d)
    d = new Date(); 法二
    d.getTime()

Operator + 也可用于将变量转换为数字

JavaScript 错误 - throw、try 和 catch

try 语句测试代码块的错误;catch 语句处理错误;throw 语句创建自定义错误

JavaScript 抛出(throw)错误:当错误发生,事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息,称之为JavaScript 将抛出一个错误。

  • JavaScript try 和 catch
    try语句中的代码在执行时会对其进行错误检测,catch语句定义当try代码块发生错误时,所执行的代码块。
    try与catch在JavaScript中总是成对出现。
    try {
    //在这里运行代码
    } catch(err) {
    //在这里处理错误
    }

var txt=""; 
function message() 
{ 
    try { 
        adddlert("Welcome guest!"); //alert拼错为adddlert
    } catch(err) { 
        txt="本页有一个错误。\n\n"; //\n用于换行
        txt+="错误描述:" + err.message + "\n\n";//用于显示try代码块中的错误信息 
        txt+="点击确定继续。\n\n"; 
        alert(txt); 
    } 
}
  • Throw语句
    用于创建或抛出异常。如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。
    throw exception
    异常可以是 JavaScript 字符串、数字、逻辑值或对象。
    exception为后面的err的内容,即错误信息

JavaScript正则表达式(regex或RE)

/正则表达式主体/修饰符(可选)
search() 和 replace()

search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式或字符串相匹配的子字符串,并返回子串的起始位置。
replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式或字符串匹配的子串。

  • search() 方法
    使用正则表达式搜索 "Runoob" 字符串,且不区分大小写
    var str = "Visit Runoob!";
    var n = str.search(/Runoob/i);
    使用字符串作为参数,字符串参数会转换为正则表达式,区分大小写
    var str = "Visit Runoob!";
    var n = str.search("Runoob");
    输出为数字,即字串的起始位置

  • replace()方法
    同上
    var str = document.getElementById("demo").innerHTML;
    var txt = str.replace(/microsoft/i,"Runoob");

正则表达式使得搜索功能更加强大(如实例中不区分大小写)。

正则表达式模式和修饰符详见http://www.runoob.com/js/js-regexp.html

使用 RegExp 对象

在 JavaScript 中,RegExp 对象是一个预定义了属性和方法的正则表达式对象。

  • 使用 test()
    est() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false
  • 使用exec()
    exec() 方法用于检索字符串中的正则表达式的匹配,该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

JavaScript 调试(console)

  • console.log() 方法
    可以使用 console.log() 方法在调试窗口上打印 JavaScript 值
  • 设置断点
    在调试窗口中,你可以设置 JavaScript 代码的断点
    在每个断点上,都会停止执行 JavaScript 代码,以便于我们检查 JavaScript 变量的值
    在检查完毕后,可以重新执行代码(如播放按钮)
  • debugger 关键字
    debugger 关键字 与在调试工具中设置断点的效果是一样的
    如果没有调试可用,debugger 语句将无法工作

JavaScript变量提升

变量提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部JavaScript 只有声明的变量会提升,初始化的不会
var y为变量声明 var y=7为变量初始化
ps: JavaScript 严格模式(strict mode)不允许使用未声明的变量

JavaScript 严格模式(use strict)

"use strict" 的目的是指定代码在严格条件下执行
严格模式下你不能使用未声明的变量

"use strict" 指令只运行出现在脚本或函数的开头

严格模式通过在脚本或函数的头部添加 "use strict"; 表达式来声明

/*在函数内部声明是局部作用域 (只在函数内使用严格模式)*/
x = 3.14;       // 不报错 
myFunction();

function myFunction() {
   "use strict";
    y = 3.14;   // 报错 (y 未定义)
}

严格模式体现了Javascript更合理、更安全、更严谨的发展方向,为未来新版本的Javascript做好铺垫
具体限制

JavaScript易错点总结

  • JavaScript使用误区

JavaScript 表单验证

表单验证分为JS验证和浏览器自动验证。required属性用于进行自动验证,约束验证(HTML5);
也分为服务端数据验证和客户端数据验证side validation

  • 验证输入内容是否为空
    function validateForm() {
    var x = document.forms["myForm"]["fname"].value;
    if (x == null || x == "") {
    alert("需要输入名字。");
    return false;
    }
    }

    名字:

  • 验证输入的数字
  • 自动验证



  • 必填(或必选)项目
    function validateForm()
    {
    var x=document.forms["myForm"]["fname"].value;
    if (x==null || x=="")
    {
    alert("姓必须填写");
    return false;
    }
    }

    姓:

  • E-mail 验证

indexOf lastIndexOf用于表示搜索字符的位置

  function validateForm(){
    var x=document.forms["myForm"]["email"].value;
    var atpos=x.indexOf("@");
    var dotpos=x.lastIndexOf(".");
    if (atpos<1 || dotpos=x.length){
      alert("不是一个有效的 e-mail 地址");
      return false;
    }
  }
  
Email:
  • JavaScript保留关键字
    建议不要使用const 有的浏览器引擎支持它等价于var

JSON

JSON 是用于存储和传输数据的格式。
JSON 通常用于服务端向网页传递数据 。

JSON 英文全称 JavaScript Object Notation, 是一种轻量级的数据交换格式,是独立的语言。

JavaScriptvoid

void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值。

  • href="#"与href="javascript:void(0)"的区别
    # 包含了一个位置信息,默认的锚是#top 也就是网页的上端。
    而javascript:void(0), 仅仅表示一个死链接。
    在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# + id。
    如果你要定义一个死链接请使用 javascript:void(0) 。

  • 语法格式

JavaScript 代码规范

你可能感兴趣的:(JavaScript学习笔记(二))