JS入门

JavaScript 是⼀种轻量级的编程语言,JavaScript 是⼀种专为网页交互而设计的脚本语言,用来实现网页上的特效效果,如:鼠标滑过弹出下拉菜单。或鼠标滑过表格的背景颜⾊改变。还有焦点新闻(新闻图⽚)的轮换。可以这么理解,有动画的,有交互的⼀般都是用JavaScript来实现的。是 Web 的基本编程语⾔,所有的现代的 HTML 页面都使用JavaScript,文件以 .js 为后缀。

⼀个完整的JavaScript 实现应该由下列三个不同的部分组成:

  1. 语言核心(ECAMScript),由 ECMA-262 定义,555559
  2. 文档对象模型(DOM),提供访问和操作页面内容的方法和接口。
  3. 浏览器对象模型(BOM),提供与浏览器交互的方法和接口。
  • 使用 <script> 元素的方式有两种:直接在页面中嵌⼊ Javascript 代码<script>代码</script> 和 包含外部 JavaScript 文件<script src="js.js"></script>

嵌入代码与外部文件对比

  • 可维护性
  • 可缓存:结果就是能够加快页⾯加载的速度。
  • 适应未来
  • 注意:可以在 HTML 文档中放入不限数量的脚本,<script> 标签可被放置在 HTML 页面的 <body><head>部分中,或者同时存在于两个部分中。
<noscript>元素

用以在不支持 JavaScript 的浏览器中显示替代的内容。包含在 <noscript>元素中的内容只有在下列情况下才会显示出来,浏览器不支持脚本或者浏览器支持脚本,但是脚本被禁用了。符合上述任何⼀个条件,浏览器都会显示 中的内容。而在除此之外的其他情况下,浏览器不会呈现<noscript>中的内容。

JavaScript 基本概念
  1. JavaScript是⼀种弱类型脚本语言,都是使用 var 定义变量,ECMAScript 中的⼀切(变量、函数名和操作符)都区分大小写
  2. 所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。标识符可以是按照下列格式规则组合起来的一或多个字符
    (1)第一个字符必须是一个字母、下划线( _ )或⼀个美元符号( $ )
    (2)其他字符可以是字母、下划线、美元符号或数字。
    (3)通常来讲,ECMAScript 的标识符采用驼峰式命名规则,也就是第⼀个字母小写,剩下的每个单词的首字母大写
  3. // 单⾏注释/*多行(块级)注释*/
  4. 严格模式
    (1)以在顶部添加如下代码:// “use strict”;
    (2)在函数内部的上方包含这条编译指示,也可以指定该函数在严格模式下执行:
function doSomething(){
 "use strict";
 //函数体
}
  1. 变量
    var+变量名;未经过初始化的变量,会保存⼀个特殊的值——undefined,在js中,同一个变量名可以被定义多次,后面定义的变量会将前面定义的变量覆盖(js弱类型语言),var也可以定义对象
  2. 用 var 操作符定义的变量将成为定义该变量的作用域中的局部变量。也就是说, 如果在函数中使用var 定义⼀个变量,那么这个变量在函数退出后就会被销毁。
  3. js中有五种数据类型Undefined(定义后未赋值或者是未定义)、Null(空)、Boolean(布尔)、Number (数字)和 String(字符串)。还有 1 种复杂数据类Object(对象),Object 本质上是由一组无序的名值对组成的。ECMAScript 不支持任何创建自定义类型的机制,而所有值最终都将是上述 6 种数据类型之⼀。
    注意:JavaScript 变量均为对象。声明一个变量时,就创建了一个新的对象。这也是人们称JavaScript 为基于对象的编程语言的原因。
  4. typeof 操作符:查看数据类型的函数
  • “undefined”——如果这个值未定义,或者定义后未赋值,或为 undefined;
  • “boolean”——如果这个值是布尔值;
  • “string”——无论是字符还是字符串,都是string类型 (默认转换String:js内置对象)
  • “number”——如果这个值是数值;无论是整数还是小数,都是number类型 (在内存中number类型默认转换Number:js内置对象)
  • “object”——如果这个值是对象或 null;Object对象代表js的所有内置对象的模板
  • “function”——如果这个值是函数。
<script>
	var c=true;
	var a=new String("kkk");
	var b="kk";
	var d=new Number(1.6);
	var e=23.4;
	var maeesge1=null;
		document.write(typeof(c)+"+"+typeof(a)+"+"+typeof(b)+"+"+typeof(d)+"+"+typeof(e)+"+"+typeof(maeesge1));	
	</script>
	结果是:boolean+object+string+object+number +object
数据类型
  1. Undefined 类型
    该类型只有一个值就是undefined
    (1)在使用var 声明变量但未对其加以初始化时
    (2)显示声明为 undefined 的时候
    (3)未定义变量的时候
  2. Null类型
    该类型也只有一个值就是null,undefined 值是派生自null 值的,因此对他们相等性测试会返回 true,alert(null == undefined); //true
    null一般用来保存对象var car = null;alert(typeof car); // 弹框 "object",如果保存对象的变量还没有真正保存对象,就应该明确地让该变量保存 null 值。体现 null 作为空对象指针的惯例,而且也有助于进⼀步区分 null 和 undefined
  3. Boolean类型
  • 该类型只有两个字面值 :true 和 false,是区分大小写的。其他类型都有与这俩个值等价的true,false
  1. Number 类型
    (1)整数、浮点数都是number类型,八进制字面值的第一位必须是零(0),后接八进制数字序列(0~7)。如果字面值中的数值超出了范围,那么前导零将被忽略,后面的数值将被当作十进制数值解析。八进制字面量在严格模式下是无效的,会导致支持的 JavaScript 引擎抛出错误。十六进制字面值的前两位必须是 0x 或者 0X,后跟任何十六进制数字(0-9 及 A-F)。其中,字母A-F可以大写,也可以小写。
    (2)保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript 会不失时机地将浮点数值转换为整数值
    (3)数值范围
    如果某次计算的结果得到了一个超出 JavaScript 数值范围的值,那么这个数值会自动转换成特殊的Infinity 值。具体来说,如果这个数值是负数,则会被转换成-Infinity(负无穷),如果这个数值是正数,则会被转换成 Infinity(正无穷)。 isFinite()函数确定⼀个数值是不是有穷的 ,返回true就是有穷的isFinite(maeesge1)
    (4)NaN(Not a Number)
  • 不是一个数值,表示一个本来要返回数值的数未返回数值的情况
  • 在其他编程语言中,任何数值除以 0 会导致错误,从而停止代码执行。但在ECMAScript(ECMAScript是一个语言标准,javascript则是基于这个标准实现的脚本语言,livescript) 中,0 除以 0 会返回 NaN,正数除以 0 返回 Infinity,负数除以 0 返回 -Infinity,因此不会影响其他代码的执行。
  • 任何涉及 NaN 的操作(例如 NaN/10)都会返回 NaN;
  • NaN 与任何值都不相等,包括 NaN 自己,isNaN("10")//falseisNaN(NaN==NaN)//falseisNaN(12)//false
  • ECMAScript 定义了 isNaN() 函数。这个函数接受⼀个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接收到⼀个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串"10"或 Boolean 值。而任何不能被转换为数值的值都会导致函数返回 true
    (5)非数值转换为数值
    -parseInt() 和parseFloat()专门用于字符串转换成数值,只用于String类型,像这种的就不行parseFloat("blue"); //returns NaNvar a=parseInt("AF");//returns NaN前者转换为整数,后者转换为浮点数
    Number()转换规则如下
  • 可用于任何数据类型。
  • 数字的话简单的传入返回;
  • Boolean的话转为0和1;
  • null的话返回0;
  • undefined的话返回NaN;
  • 如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即 "1"会变成 1,“123” 会变成 123,而"011"会变成 11(注意:前导的零被忽略了);
  • 如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也忽略前导零);
  • 如果字符串是有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值;
  • 如果字符串是空的(不包含任何字符),则将其转换为 0;如果字符串中包含除上述格式之外的字符,则将其转换为 NaN。
var num1 = Number("Hello world!"); //NaN
var num2 = Number(""); //0
var num3 = Number("000011"); //11 
var num4 = Number(true); //1

parseInt()转换规则
忽略字符串前面的空格,直至找到第⼀个非空格字符;

  • 如果第⼀个字符不是数字字符或者负号,parseInt() 就会返回 NaN;
  • 如果第⼀个字符是数字字符,parseInt() 会继续解析第⼆个字符,直到解析完所有后续字符或者遇到了⼀个非数字字符。
var a=parseInt("AF");//NAN
var num1 = parseInt("1234blue"); // 1234,遇到了非数字字符
var num2 = parseInt(""); // NaN(不符合上述第一步)
var num3 = parseInt("0xA"); // 10(⼗六进制数) 
var num4 = parseInt(22.5); // 22
var num5 = parseInt("070"); // 70(⼗进制数) 
var num6 = parseInt("0xf"); // 15(⼗六进制数)
  • 可以为这个函数提供第⼆个参数:转换时使用的基数(即多少进制)。
parseFloat("blue"); //returns NaN
var num5 = parseInt("10", 8); //8 (8进制的10转换为十进制) 
var num6 = parseInt("10", 10); //10(10进制的10转换为十进制)
var num7=pareInt("AF",16);//175(16进制的AF转为十进制)

parseFloat()转换规则
从第一个字母开始,一直到末尾,或者遇到一个无效的浮点数字符为止;
始终忽略前导的零;
字符串中第一个小数点有效之后的无效;
只解析十进制值,没有通过第⼆个参数指定基数的用法。
十六进制格式的字符串则始终会被转换成 0;

var num1 = parseFloat("1234blue"); //1234 (整数) 
var num2 = parseFloat("0xA"); //0
var num3 = parseFloat("22.5"); //22.5 
var num4 = parseFloat("22.34.5"); //22.34 
var num5 = parseFloat("0908.5"); //908.5 
var num6 = parseFloat("3.125e7"); //31250000
  1. String类型
  • 字符串可以由双引号 ( " ) 或单引号 ( ’ ) 表示,俩个没有区别
  • 数值、布尔值、对象和字符串值(每个字符串也都有⼀个 toString()方法,该方法返回字符串的⼀个副本)都有 toString() 方法,但 null 和 undefined 值没有这个方法。
  • 调用toString() 方法不必传递参数,之前的isNaN和isFinite()需要传递参数
  • 在调用数值的toString() 方法时,可以传递⼀个参数,输出数值的转换结果
<script>
var num = 10; 
alert(num.toString()); // "10"默认情况下以十进制格式返回
alert(num.toString(2)); // "1010"
alert(num.toString(8)); // "12"
alert(num.toString(10)); // "10"
alert(num.toString(16)); // "a"
document.write(num.toString());//“10”
</script>

在不知道要转换的值是不是 null 或 undefined 的情况下,还可以使⽤转型函数 String(),这个函数能够将任何类型的值转换为字符串。

var value4;//未初始化
document.write(String(c));//true
alert(String(value4)); // "undefined"
  1. Object类型
  • toString()和valueOf()返回对象的字符串表示
  • toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
  • constructor:保存着用于创建当前对象的函数。
  • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定。 例:o.hasOwnProperty(“name”)
  • isPrototypeOf(object):用于检查传⼊的对象是否是传入对象的原型。
  • propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使⽤ for-in 语句来枚举。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值