JavaScript知识点(1)
JavaScript特点
1.直译式脚本语言(代码不用预编译,在程序的运行过程中逐行进行解释)
2.一种动态类型、弱类型、基于原型的语言
3.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,在HTML网页上使用,用来给HTML网页增加动态功能,能在浏览器中实时浏览到交互效果。
4.兼容性问题: IE6、7、8是个怪胎,对JavaScript语法有兼容性问题,所以要写兼容写法。花式写法很多,抽象:从简单入手,细细品味代码
弹窗alert()
1.alert 就是英语中“警报”的意思,能够让页面弹出警告框。让浏览器弹出一个窗口,窗口里的内容就是alert()中的内容
js程序是顺序执行的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>hello</title>
</head>
<body>
<!-- type可以不写,写了一定要写对 -->
<script>
// 弹窗
alert("hello word!");
</script>
</body>
</html>
控制台console.log()
控制台是 浏览器“检查”或者“检查元素”里面的功能,快捷键是 F12。英文叫做 console。程序运行后所产生的错误,都会在控制台中输出,控制台是调试程序的一个利器。
console就是控制台 log就是日志的意思 这里是动词 表示打印
console.log(“你好”)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>hello</title>
</head>
<body>
<!-- type可以不写,写了一定要写对 -->
<script>
// 控制台,打印
console.log("hello,word!");
</script>
</body>
</html>
注释
单行注释://注释内容 不可换行
块级/多行注释:/*注释内容 可以换行 */
注释用于提高代码的可读性编辑器里注释的快捷键一般是: ctrl+/注意:注释的符号,不能嵌套
js语句
alert(“你好啊!”); 这是一条语句JS中的每条语句以分号 ; 结尾。如果语句是一行一行写的,没有分号结尾也是有效语句。但项目做好后,通常都会进行压缩,用软件把所有的空格、换行都去掉。此时,语句末尾的分号显得非常重要,如果去掉分号,将不能执行。注意:所有的符号都是英文的符号,不要用中文
错 对书写方式
内部书写
在HTML文件中直接进行代码的书写,JS 写在
<script>
// 1.使用script标签引入js,script标签可以放在让任何位置
console.log("内部")
</script>
<!-- 在标签内使用。不建议使用 -->
<button onclick="alert('nihao')">点一下</button>
外部引入
<!-- 使用外部js,类是于css方式
可以在任何地方放-->
<script src="js/a.js"></script>
直接写在HTML内部(不建议使用)
标识符
1.就是一个名字,用来对变量、函数、属性等进行命名
2.标识符命名规范:
a:第一个字符必须是字母,下划线(_),或者美元符号$ ,其他字符可以是字母,下划线,美元字符或者数字,不能含有空格
b:不能以关键字或者保留字命名
关键字:
关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。Javascript 中的很多内置功能用关键字标注起来,便于程序员调用。按照规则,关键字也是语言保留的,不能用作标识符。
break do instanceof typeofcase else new varcatch finally return voidcontinue for switch whilefunction this with defaultif throw delete intry
保留字:
保留字有可能在将来被用作关键字来使用,不能用作标识符
abstract int short booleanexport interface static byteextends long super charfinal native class floatthrows const goto privatedouble import public
变量
变量是存储信息的容器。
JavaScript的变量为弱变量,可以用来保存任何类型的数据。
在JS中,只有var这一种声明变量的类型,它可以声明各种类型的数据
var a; 定义一个变量a,电脑内存中,就会开辟一个空间,来存储这个变量 a。可以给这个变量赋值,JS 中给变量赋值用等号,等号右边的值赋给左边
可以通过var声明多个变量,变量与变量之间以,逗号隔开var a=20,b=100;console.log(a,b);
变量的命名规范
a:第一个字符必须是字母,下划线(_),或者美元符号$ ,其他字符可以是字母,下划线,美元字符或者数字,不能含有空格
b:不能以关键字或者保留字命名
变量须先声明
使用一个变量,必须先进行一个 var,才能使用。 var 这个过程可以叫做声明 declaration,也可以叫做定义 definition。直接运行语句
变量的赋值
变量的赋值用等号,等号就是赋值
var a; // 定义
a = 100; // 赋初值
console.log(a); // 输出:100
var a = 100; // 定义和赋初值一起写
console.log(a); // 输出:100
var a = 100;
var b = 200;
// 改变 a 变量的值,a 的值变为 200。b 的值不变。a = b;
console.log(a); // 输出:200
console.log(b); // 输出:200
当声明了一个变量,想改变该变量值时,不需要 var重新声明
var a = 100;a = 50;console.log(a); // 输出:50
一个变量,通过var声明但未被赋初值时,变量的值为 undefined;
已经通过var定义了这个 a,但浏览器是这样解析:如果这个变量没有被赋初值,那么这个变量就视为没有“定义完成”。值就是 undefined。
JavaScript数据类型及类型转换运算符
数据类型
可分为原始类型和对象类型,也可以分为可变类型和不可变类型。
可变类型的值是可修改的。对象和数组属于可变类型;数字、布尔值、NULL和undefined属于不可变类型。字符串可以看成由字符组成的数组,但是是不可变的
五种原始数据类型
Number 值是数据
String 值是字符串
boolean 值是布尔值 只有true或者false真或假
Undefined 值未定义
Null 值为空(空对象)
一种复合数据类型Object
对象object、数组Array、函数Function等都属于object类型
数据类型检验
数据类型检测:typeof(x) 或 typeof x
var a = 100;
var b =“小明”;
console.log(typeof a); // 输出numberconsole.log(typeof b); // 输出string
String类型
字符串是存储字符的变量。
字符串的字面量,必须用双引号、单引号包裹起来。字符串被限定在同种引号之间,即必须是成对单引号或成对双引号。
var str1=“今天天气很好”;
必须是同种引号,下面的写法是错误的:
var str2=‘哈哈”;
一个数字用引号包裹起来,就是字符串类型:var str3=“3”;
正常情况下,双引号里面只能用单引号或者单引号里只能用双引号:
var str4=“老师说你像’考拉’一样漂亮”;
var str5=‘老师说你像"考拉"一样漂亮’;
双引号内部如果要使用相同的引号,可以使用 \ 反斜杠进行转义:
var str6=“老师说你像"考拉"一样漂亮";
反斜杠自己也用反斜杠来转义:var str7=“c:\a\b.jpg”);
常用的转义字符:
\n 回车换行
var str8=“你好\n啊\n我是谁\n啊”;
Boolean类型
布尔(逻辑)只能有两个值:true 或 false。布尔值常用在条件测试中
var a=true;
var b=false;
Boolean类型中,字符串、非 0 数字、对象,将返回true ;空字符串、数字0、undefined、 null、NaN,将返回 false。
Undefined类型
使用var声明变量但未对其赋值,这个变量就是undefined
var a;
console.log(a); //undefined
声明变量以后输出和未声明变量输出区别:
var a;
console.log(a); //undefined console.log(b); //没有声明b,报错
Null类型
从逻辑角度看,null值表示一个空对象指针,所以typeof操作符检测null时会返回“object”。
var a = null;
console.log(typeof a); //object
Undefined值派生自null,所以ECMA-262规定对它们的相等性测试要返回true。
console.log(null == undefined); //true console.log(null === undefined); //false
Number类型
avaScript 唯一的数字类型,不再细分为整型int、浮点型float等
数字字面量:十进制、八进制和十六进制
十进制
var a=34;
var b=100;
八进制
八进制字面值第一位必须是零,后面的数字必须是0~7之间的数,超出范围 ,前面的零被忽略,数值当作十进制解析。
var num1=070; //八进制的56
var num2=079; //无效的八进制,解析为79 var 、num3=08; //无效的八进制,解析为8
十六进制
十六进制字面值前两位必须是0x,后跟任何十六进制数字(09和AF)。A~F不区分大小写。
var num1=0xA; //十六进制的10
提示:尽管所有整数都可以表示为八进制或十六进制的字面量,但所有数学运算返回的都是十进制结果。
Number类型转换
-
Number () 属于强制类型转换方法把变量的值转换为数字,转换的是整个值,而不是部分值。如果变量的值无法转换为数字,那么 Number() 函数返回 NaN。
// number()把变量强制转换为数字 // NaN 非数字 var str1="123"; var str2="0o1234"; var str3= "0xD1234"; var str4="aa"; var str5="q"; console.log(Number(str1)); console.log(Number(str2)); console.log(Number(str3)); console.log(Number(str4)); console.log(Number(str5)); console.log("------------------------------------");
-
parseInt (string,radix) 可解析一个字符串,并返回一个整数。string 必填项,表示要解析的字符串;radix 可选项,表示要解析的数字的基数(进制数)。介于2-36之间,如果该参数小于2或者大于36,则parseInt()将返回NaN。
// 转换为整数 console.log(parseInt("123.8")); console.log(parseInt("123a")); console.log(parseInt("q123")); console.log(parseInt("1.2.3")); console.log(parseInt(null)); console.log(parseInt(false));
注意:只有字符串中的第一个数字会被返回。开头和结尾的空格是允许的。如果字符串的第一个字符不能被转换为数字,那么 parseInt() 会返回 NaN
-
parseFloat (string) 可解析一个字符串,并返回一个浮点数
注意: 开头和结尾的空格是允许的。 如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。 如果只想解析数字的整数部分,请使用 parseInt() 方法。
// 转换为浮点数(小数) console.log(parseFloat("123")) console.log(parseFloat("123.33")) console.log(parseFloat("123.2.2")) console.log(parseFloat(" 123.2 "))
-
isNaN() 用于检查变量是否是非数字值。
如果把NaN 与任何值(包括其自身)相比得到的结果均是 false,所以要判断某个值是否是 NaN,不能使用 == 或 === 运算符。正因为如此,isNaN() 函数是必需的。
// isNaN()检查是不是非数字 false------数字 true--------非数字
console.log("----------")
console.log(isNaN(123))
console.log(isNaN("123"))
console.log(isNaN("a"))
// console.log(isNaN(b)) 错的