码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript学习(一)

时间:2019-10-03 23:52:57      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:class   传递   bsp   div   优先级   操作   直接   报错   适用于   

1、引入Script文件,一般放到head标签内即可

<script src="./JS/learn.js">
</script>

路径问题:

./表示当前路径;

/表示根目录;

../表示上一级目录;

如果不加/,如<script src="JS/learn.js">的形式,也表示的是当前目录(所以要注意咯!);

2、调试

使用console.log()进行控制台的信息输出,在source中加断点调试,和vs调试一样;

3.类型

3.1  js是弱类型语言,使用var关键字声明,如果想知道当前操作的变量是什么类型,使用typeof关键字;typeof num即可(注意,typeof是个关键字,不是函数)。

3.2  如果一个变量未进行赋值,那么log它的值就是undefined

    注意:undefined和null不一样

3.3 注意NaN表示的不是一个数字,但是它是数字类型

4.字符

  JS中字符由""和‘‘包裹,这两个符号表示的意思相同,之所以有两种,是方便句内引号不需要额外加转义,句内单引号,那么外包双引号,反之同理。如果句内又有单引号,也有双引号,那么加额外转义字符 \ 即可。

 5.文档注释

单行和多行注释同c#

文档注释使用,按下/**回车即可,一般的编译器会自动补充完整

/**

*

*/

6.类型转换

parseInt()这个是从第一个字符转换成数字第一个碰到的不是数字的字符截止,返回输出结果,如果从第一个字符开始就不是数字,直接返回NaN;

7.比较运算符  ===

表示全等于,同时判断数值和数据类型,==只判断数值,所以注意"12"==12返回的是true

8.循环结构

switch中的break是可以省略的,与C#是不一样的。

 

9.数组

在JS中,数组是集合、队列、栈的综合体,因为可以承载各种类型的数据。

所以你可以看到这样的数组:

var arr2 = [1,‘lee‘,[1,2,3],function a(){alert(‘Hi‘)}];
console.log(arr2[3]());
console.log((arr2[2]))

甚至放进去一个函数,然后执行。

很神奇的操作。

 

for in 循环  

输出数组的下标

还可以输出对象的属性名;

 

10.函数

函数由关键字function声明,注意函数没有返回值,因为本身就是一个var类型,有返回值直接接收就可以了,不需要显示声明。

函数的形参声明也不需要写var关键字,直接写变量名即可。

注意:

函数的声明位置不影响其调用;

原因:

所有声明的函数都属于window对象,JS有一个优先级会优先声明,所以调用和位置无关,但是这样的坏处是可能替换window对象的其他函数。

注意:

函数可以返回函数,返回值是function类型。

函数名+()直接调用函数。

类似于C#中的委托,使用一个变量表示函数

function demo()
{
	return function (){console.log("It‘s demo inside!")};
}
var de = demo();
de();

匿名函数(上部代码)

函数的lambda表达式

function demo(func)
{
	if(func)
	{
		func();
	}
}
function hello()
{
	console.log("This is Hello!");
}
demo(hello());//函数作为参数传递
demo(()=>console.log("lambda"));//lambda表达式

自调用函数/闭包

(function demo(num){console.log("This is "+num)})(2);

自调用函数就是让函数自己执行一次;

说明:第一个包围住函数声明的括号()表示声明函数体,紧接着后面的()表示调用函数,如果有参数,直接写在括号内。

 

11.作用域

只有在function内部声明的变量才是局部变量,除此之外的变量都是全局变量,自动添加进window对象中。  

 注意:

预解析过程:声明优先但是赋值不会优先;

console.log(a);
var a=12;

现象:控制台输出undefined。

原因:JS的优先级机制会将所有的声明放到程序最优先执行的位置,所以只要声明了就不会报错,但是赋值并不会提升到同样的优先级,而是保留到原位。

同样的;

预解析过程适用于函数的声明。

如果同时声明了同名的方法和变量:

注意:方法是覆盖对象的,可以这么理解,预解析器将声明和方法都提到了最优先级,但是声明是被提到了最上层,而方法是被放置在下一行位置。

JavaScript学习(一)

标签:class   传递   bsp   div   优先级   操作   直接   报错   适用于   

原文地址:https://www.cnblogs.com/LeeSki/p/11619700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!