JavaScript基础语法

Posted Stay--hungry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript基础语法相关的知识,希望对你有一定的参考价值。

javascript与C++的相同点

注释方式、语句以分号结尾、变量赋值、自增自减、逻辑运算符,if语句、switch语句

输出

  • 使用console.log()进行输出
var a = 1;
console.log(a); 

console.log()也可以一次输出多个值,中间以空格隔开

var a = "hello", b = "JavaScript";
console.log(a, b);

数据类型

JavaScript 提供七种不同的数据类型,它们是: undefined(未定义)、null(空)、boolean(布尔型)、string(字符串)、symbol、number(数字)、bigint(可以表示任意大的整数)和 object(对象)。
可以用typeof运算符确定变量或值的类型.

var a = 1, b = 1.2, c = true, d = "hello";
console.log(typeof a, typeof b, typeof c, typeof d); // number number boolean string

用var、let、const声明变量

可以向MATLAB一样直接创建变量:a = 1;,如此创建的变量会被自动创建在 global 作用域中,形成全局变量。 这种创建方式也要求在创建时必须进行初始化
当在代码其他地方无意间定义了一个变量,刚好变量名与全局变量相同,这时会产生意想不到的后果。 因此应该总是使用 var 关键字来声明你的变量。避免在一个函数中创建的变量在另一个函数中也可使用。

通过在变量前面使用关键字 var,声明一个变量,各种类型均可以用var声明。例如:

var a;
var str = "String";
var f = 3.1415;

变量名称可以由数字字母美元符号 $ 或者下划线 _ 组成,但是不能包含空格或者以数字为开头。

当 JavaScript 中的变量被声明的时候,未对它进行赋值时,该变量为 undefined

  • 当你对一个undefined类型的变量进行运算操作的时候,算出来的结果将会是 NaN,它的意思是 “Not a Number”。
  • 当用一个类型为 undefined 的变量来做字符串拼接操作的时候,它会转换成字符串(string)undefined。
var a;
if (typeof a == 'undefined') //判断变量是否初始化
{
    console.log("error");
}

在 JavaScript 中所有的变量和函数名都是大小写敏感的 ,要区别对待大写字母和小写字母。

注意:JavaScript使用 var 关键字来声明变量时,重复声明导致变量被覆盖不会报错
在 ES6 中引入的新关键字let 解决了 var 关键字带来的这种潜在问题。 使用 let 关键字来代替 var 关键字后,重复声明变量时会报错。
即:当使用 let 的时候,同一名字的变量只能被声明一次。

JavaScript中也存在const关键字,const 拥有 let 的所有优点,不同的是,通过 const 声明的变量是只读的。 这意味着通过 const 声明的变量只能被赋值一次,而不能被再次赋值。

const MAXSIZE = 100;

字符串

定义一个字符串必须要用单引号或双引号来包裹它。 当字符串中本身就包含引号 " 或者 ’ 时,应用‘\\’进行转义

var a = "\\"JavaScrpt!\\"";

JavaScript 中的字符串可以使用开始和结束都是同类型的单引号或双引号表示。 与其他一些编程语言不同的是,单引号和双引号的功能在 JavaScript 中是相同的

当需要在一个字符串中使用多个引号的时候,你可以使用单引号包裹双引号或者相反。 常见的场景比如在字符串中包含对话的句子需要用引号包裹。

var str = 'This is called "book"';

注意内外层使用的引号应该是不同的,即一个字符串在开头和结尾处必须有相同的引号。 如果在中间使用了相同的引号,字符串会提前中止并抛出错误。

当 + 操作符被用于一个字符串类型的值的时候,它被称作拼接操作符,作用为拼接其他字符串来创建一个新的字符串。

var a = 'Hello, ';
var b = "JavaScript";
var c = a + b; // c = "Hello, JavaSript"
var a = 'Hello, ';
var name = "Shao";
a += name;
console.log(a);

可以通过在字符串变量或字符串后面写上.length 来获得 String 的长度.

var a = "hello".length; //a = 5
var b = "hello";
var a = "hello", b;
b = a.length;
console.log(b);

字符串从下标0开始存入数组中。

var a = "hello"; //a[0] = h;
// a[a.length - n] 就是字符串的倒数第n个字符

在 JavaScript 中,字符串(String)的值是不可变的(immutable),这意味着一旦字符串被创建就不能被改变。

let myStr = "Bob";
myStr[0] = "J"; //无效

myStr 的值是不会改变成 Job 的,因为变量 myStr 是不可变的。 注意,这并不意味着 myStr 永远不能被改变,只是字符串字面量 string literal 的各个字符不能被改变。
改变字符串值的唯一方法是重新给它赋一个值。

运算

JavaScript中除法结果若是小数,则存储的就是小数,而不会取整。

在逻辑判断中,使用"=="时,若二者类型不同,JavaScript会自动进行类型转换,从而

1 ==1//true
3 == "3" //true

因此==也被称为相对相等运算符。而===被称为“严格相等运算符”,类型不同时,返回值为false。

1 ===1//false
3 === "3" //false

同理还有相对不等运算符!=和严格不等运算符!==。进行大于、小于、大于等于、小于等于等比较时,若类型不同也会自动进行类型转换。

7   > '3'; //true
'1' >  9; //false
3 >= '2' //true

数组

JavaScript中的数组功能非常强悍,可以存储多个不同类型的元素。

var a = ['hhhh', 2, 3.14];
console.log(a[0]);

还可以在其他数组中嵌套数组,构成多维数组。

var a = [["h", "e", "l", "l", "0"], 2, 3.14];
console.log(a);  //输出 [ [ 'h', 'e', 'l', 'l', '0' ], 2, 3.14 ]

我们可以使用索引(indexes)来访问数组中的数据。
数组索引与字符串一样使用方括号来表示,不同的是,它们不是指定字符,而是指定数组中的一个条目

var a = [["h", "e", "l", "l", "0"], 2, 3.14];
console.log(a[0]); //输出 [ 'h', 'e', 'l', 'l', '0' ]
console.log(a[0][0]); //输出 h

数组操作函数

  • push:将一个数据添加到数组末尾

.push() 接受一个或多个参数(parameters),并把它压入到数组的末尾。

const arr2 = ["Stimpson", "J", "cat"];
arr2.push("happy", "joy");
console.log(arr2); //[ 'Stimpson', 'J', 'cat', 'happy', 'joy' ]
  • pop:弹出并返回 数组末尾的元素
var Arr = [1, 4, 6];
var a = Arr.pop();
console.log(Arr); //[ 1, 4 ]
console.log(a); //6
  • unshift:将一个元素添加到数组的头部
  • shift:弹出并返回 数组第一个元素(头部元素)

函数

JavaScript中使用function创建函数。

function functionName(param1, param2)  //函数参数
{
	...
	return ... //可以有函数返回值
}

functionName(a, b); //使用函数名来调用函数

函数参数的类型不用指定。

function add(a, b)
{
	console.log(a + b);
}

在函数外定义的变量具有 全局 作用域。 即在函数外定义的变量可以在代码的任何地方被调用。
而在一个函数内声明的变量,以及该函数的参数都具有局部(local)作用域。
一个程序中有可能具有相同名称的局部变量 和全局变量。 在这种情况下,局部变量将会优先于全局变量

函数一般用 return 语句来返回值,但这不是必须的。 在函数没有 return 语句的情况下,当你调用它时,该函数会执行内部代码,返回值的类型是 undefined。

语句

switch语句中与case后的值进行比较时采用的是严格比较,即类型不同就是false.

对象

对象(object)与数组的区别在于数组使用索引来访问和修改数据,而对象中的数据是通过 properties 访问的。
对象就相当于结构体,但其内部可以存储的值更加多样,设置的属性名也是多样的。
注意:各属性之间是逗号隔开,属性名与属性值之间是冒号连接。

const cat = {
    "name": "Whiskers",   //属性为字符串
    legs: 4,  // 若属性名中只有一个字符串,则引号可以直接省略
    100: 1,   //数字也可以作为一种属性
    "enemies": ["Water", "Dogs"]  //属性的值为一个数组
    };
console.log(cat.name, cat.legs, cat[100], cat.enemies);

访问字符串类型的属性使用点号表示法(.),访问数类型的属性使用方括号表示法([ ])。
如果要访问的属性名中包含空格,就必须使用方括号表示法来获取它的属性值。

const cat = {
    legs: 4,  // 若属性名中只有一个字符串,则引号可以直接省略
    100: 1,   //数字也可以作为一种属性
    "hh hh": 3
    };
console.log(cat.legs + cat[100] + cat["hh hh"]);

通过对对象上使用方括号表示法,还可以访问对象的属性值

const cat = {
    legs: 4,  
    100: 1,   
    "hh hh": 3
    };
var a = "legs", b = "100", c = "hh hh";
console.log(cat[a], cat[b], cat[c]); //4 1 3
console.log(cat["legs"] + cat["100"] + cat["hh hh"]); // 8

与C++中的结构体相同,JavaScript对象的每个属性都可以作为一个变量使用

JavaScript还允许动态地为对象添加、删除属性

const myDog = {
    "name": "Happy Coder",
    "legs": 4,
    "tails": 1,
    "friends": ["freeCodeCamp Campers"]
  };
  myDog["bark"] = "woof";  //添加了一个bark属性
  //myDog.barks = "woof"; 也可
  delete myDog.barks; //删除了myDog中的barks属性;
//console.log(myDog);  

以上是关于JavaScript基础语法的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript基础语法

JavaScript基础语法+数据类型

JavaScript:基础语法

javascript基础加固3—-语法2

JavaScript的一些基础语法和常用方法(附代码)

javascript基础语法