首页 > 编程语言 >JavaScript基础语法

JavaScript基础语法

时间:2023-02-25 20:57:02浏览次数:38  
标签:console name 对象 JavaScript 基础 语法 log var 函数

JavaScript基础语法


一.字面量和变量

​ 字面量,都是一些不可改变的值,如:1,2,3...,可直接使用

​ 变量,可以用来保存字面量。

//声明变量
var a;
//变量赋值
a = 12;
//声明与赋值同时
var b = "Hello";

//标识符一般采用驼峰命名法,首字母小写,单词首字母大写,其他小写
var helloWorld = 12;

二.JavaScript 输出

//弹出警告窗口
alter("Hello world!");

//写入到HTML文档中,故运行时会输出在页面当中
document.write("Hello World");

//写入到控制台
console.log("Hello world");


三.数据类型

基本类型:String(字符串) Number(数字) Boolean(布尔值) NULL(空) Undefined(未定义) Symbol

//字符串
var str = "Hello";

//数字
var num1 = 1;
var num2 = 1.0;
//十六进制
var num3 = 0xfff;
//八进制
var num3 = 07;

//js中Number类型的最大值:Number.MAX_VALUE;
var a = Number.MAX_VALUE
/*当值大于Number.MAX_VALUE时就会显示Infinity,Infinity标志正无穷,-Infinity标志负无穷,是个字面量*/
var a = Infinity;

//NaN 是一个特殊数字,表示Not a Numberi
var a = "a"*"b";


/*使用js进行浮点计算可能不精确,所以js尽量不要进行精确度较高的运算,如以下运算得到的结果可能不是0.3,而是0.300000000000001这样的结果。*/
var c = 0.1+0.2;

//布尔值
var x = true;
var y = false;

//未定义
var x; //此时x就是未定义类型

//空
var x = null;




//JavaScript 变量均为对象,当声明一个变量时,就创建了一个对象
// 往往 var x; 这样定义变量,变量类型并未定义,但可以使用new 关键字定义类型

//这样x就是Number型的
var x = new Number;


//转义字符
/*
    \" 表示 "
    \' 表示 '
    \n 表示换行
    \t 表示制表
*/

var str = "I say \"hello\"";


强制类型转化
/*
   将其他数据类型转为String类型
        1. 调用被转换类型的toString()方法,该方法不会改变原元素,二十返回转换结果,注意null和undefined没有toString()方法,不然会报错
        2. 调用String()函数,并将被转化数据作为参数,该函数不会改变原元素,返回转换结果
*/

//-------------1--------------
var a = 123;
a = a.toString();

//----------------2----------
var a = 123;
a = String(a);

var b;
b = String(b);


/*-------------------------------------------------------------*/


/*
   将其他数据类型转为Number类型
        1. 使用Number()函数,并将被转化数据作为参数,该函数不会改变原元素,返回转换结果
        2. 该方式专门应对字符串:
                 -parseInt()将字符串转化为整数
                 -parseFloat()将字符串转化为浮点数
*/

//-------------1-------------
var a = "123";
a = Number(a);
/*注如字符串含有非数字字符,以下a的结果为NaN,即非数字意思,如果是全空格则为0
   null > 0
   undefined > NaN
*/
var a = "abc"
a = Number(a);




//---------------2-------------
var a = "123px";
//parseInt可以将字符串有效整数提出转化为整数,第二个参数可以指定进制
a = parseInt(a,10);

var b = "123.122px";
b = parseFloat(b);


/*-----------------------------------------------------*/

//转化为Boolean,使用Boolean()
/*
    NaN > flase
    0 > flase
    其他 > true
    "" > flase
    非空串 > true
    null > flase
    undefined > flase
*/

var a = 123;
a = Boolean(a);

引用数据类型:Object 对象,对象属于一种复合数据类型


四.循环

//循环与C语言差不多

//----------while循环---------------
while(条件){
    
}


//----------for循环----------------
for(var i=0; i < 10 ; i++;){
    
}





五.对象

/*
    对象类型:
        1.内建对象
             -由ES标准中定义的对象,在任何的ES的实现中都可以使用
             - 比如:Math String Number Boolean Function Object...........
        
        2.宿主对象
            - 由JS运行环境提供的对象,目前来说由浏览器所提供的
            - 比如BOM,DOM
            
        3.自定义对象
           - 由开发人员自己创建的对象
*/


//1.创建对象
var obj = new Object();

//2.向对象中添加属性
obj.name = "Zheng";
obj.gender = "男";
obj.age = 18;

//3.读取对象中的属性
//法1
console.log(obj.name);
//法2
console.log(obj["name"]);

/* 
    in运算符,可以检查一个对象中是否含有某属性,有返回true,无返回flase
*/
console.log("name" in obj);



/*
    注意
    JS中的变量都是保存在栈内存里的,
        基本数据类型的值都是保存在栈内存当中,修改一个变量不会影响其他变量
       
        对象是保存在堆内存当中
        var obj2 = obj;
        是把 obj的地址传递给obj2
        故修改obj的属性,obj2的属性也会被修改
        
        
*/



/*
    使用字面量创建一个对象
    使用字面量创建一个对象时,可直接指定属性
    
*/
var obj = {};

var obj2 = {
    name:"Zheng",
    age:18,
    test:{name:"Hong"}
}

六.函数

/*
    函数
        -函数也是一个对象
        -函数中封装一些功能
*/

//创建一个函数
var fun = new Function();


function myFunction(p1,p2){
    return p1*p2;
}

//匿名函数
var fun = myFunction(){
    
};
/*注意,
如果没有return或者return后不返回任何值,则返回值为undefined
当调用函数时,传入参数过多或参数类型不同,并不会报错。
*/
var fun3 = function(p1,p2){
    return p1*p2;
};
//调用
fun3()


//立即执行函数,函数定义完立即被调用,立即执行函数往往只执行一次
(function(){
    
})();

(function(a,b){
    return a*b;
})(1,2);

七.作用域

/*在JS中有两种作用域:全局作用域,函数作用域
    在全局作用域中,有一个全局对象window
    在全局作用域中,所有变量都会作为window的属性保存
    在全局作用域中,所有函数都会作为window的方法保存
*/


// var a=1;的语句以下都可以访问a
var a = 1;
var myFunction = function(){};

// 函数体以外都访问不到这个a,此时就会报错
var myFunction = function(){
    var a = 1;
};
console.log(a);



/*
    以下两段代码执行结果不同
            1的结果是undefined
            2的结果是报错
            
           原因:
             -使用var关键字声明的变量,会在所有代码执行前被声明
             -如果不用var关键字声明,不会在所有代码执行前被声明
*/
//------------1--------------
console.log(a);
var a=1;

//------------2-------------
console.log(a)
a=1;


/*
    函数提前
    function myFunction(){
    
    }
    如此创建函数,它会在所有代码执行前完成创建,一般可在任意位置调用
    
    var myFunction()=function {};则只能在该函数创建语句后调用该函数
*/



/* ---------var和let的区别
       1.var声明的变量没有块作用域,let有如
          if(a>b){
               var c=1;
          }
          
         var d = c;
         
         如此d的值为1;
       -----------------------
       
        if(a>b){
            let c=1;
        }
        
        var d = c;
        此时就会报错,因为c还没被定义,c仅供在if(a>b){}这里面使用
        
        
        
      2.在相同var可重新声明变量,let不可,在不同作用域,let可以
          var x=1;
          var x=2; //可以
          
          let x=1;
          let x=2;//不可以
          
          let x=1;
          {
               let x= 2;//可以
          }
          
*/



八.类(构造函数)

/*
    构造函数的执行流程
        1.立刻创建一个新的对象
        4.将新建的对象设置为函数的this
        3.逐行执行函数的代码
        4.将新建的对象作为返回值返回
    这是JS创建类的方法
*/
function Person(name,age){
    this.name = name;
    this.age = 18;
    
    this.sayName:function(){
        alter(this.name);
    }
}

var per = new Person("Zheng",12);

//使用instanceof可以检查一个对象是否是一个类的实例
console.log(per instanceof Person);

//这样没创建一个对象都不用每次创建sayName函数,如此可以减少内存
//将sayName在全局作用域中
function sayName(){
    return this.name;
}

function Person(name,age){
    this.name = name;
    this.age = 18;
    
    this.sayName = sayName;
}
var per = new Person("Zheng",12);



/*
   在全局区域中定义函数,污染了全局作用域的命名空间
   而且定义在全局作用域很不安全
   
  原型 prototype
  我们创建的每一个函数,解析器都会向函数中添加一个属性prototype
  该属性指向prototype对象
  
  当以构造函数调用时,它所创建的对象中都会有一个隐含属性
  指向该构造函数的原型对象,我们可以通过__proto__来访问
  console.log(per.__proto__);
  
  原型对象就相当于一个公共区域,所有同一个类的实例都可以访问到这个原型对象
        我们可以将共有内容统一添加到原型对象当中
        
  当访问一个对象的属性或方法中,闲去,会现在对象自身中查找,没有则去原型对象中去找
  有则返回
 
  以后创建构造函数时我们可以将对象共有的属性和方法添加到原型对象中
  
*/

//向Person的原型对象添加属性
Person.prototype.a = 1;

Person.prototype.sayName = function(){
    console.log(this.name);
};

/*
    使用hasOwnProperty方法可查看对象自身是否含有该属性
    hasOwnProperty方法是per原型的原型的方法
    Object对象没有原型
*/
console.log(per.hasOwnProperty("name"));

//--------------
console.log(per);  //打印出的是[object , Object]
//当我们希望输出一个对象时,会自动调用toString方法相当于下面语句
console.log(per.toString());

九.垃圾回收


标签:console,name,对象,JavaScript,基础,语法,log,var,函数
From: https://www.cnblogs.com/iamzheng/p/17155340.html

相关文章

  • python基础-基本语句
    1条件语句在进行逻辑判断时,我们需要用到条件语句,Python 提供了 if、elif、else 来进行逻辑判断。格式如下所示: 1if判断条件1:2执行语句1...3elif判断......
  • python基础-入门必备知识
    1标识符标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。以下划线开头的标识符有特殊含义......
  • 【Mybatis】【基础设施】【一】Mybatis源码解析-属性分词器PropertyTokenizer
    1 前言上一节我们在解析settings的时候,说到了分词器PropertyTokenizer,这种东西我理解为框架背后默默付出的辛勤工作者。Mybatis本身可以看作一个舞台,我们可能会看到舞台......
  • 深度剖析JavaScript闭包及其原理,有哪些优缺点?
    JavaScript闭包JavaScript中的闭包(closure)是定义在函数内部的一种特殊作用域。它能够让函数访问其他函数中局部变量,即使当前函数不是以该变量为参数传递的,也可以保存其词......
  • python数据的基础绘图分析
    importpandasaspddf=pd.read_excel(r"C:\Users\ying\Desktop\catering_sale.xls")  print(df.describe())销量count200.000000mean2755......
  • 6 背包问题基础
    01背包理论基础   有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价......
  • Java基础(1)
    面向过程和面向对象的概念面向过程:就是针对过程的开发,以什么正在发生为目标的编程开发,比如一辆车从出站到进站,只编写出站和进站两件事,然后依次调用,而不是针对车本身进行编......
  • 基于图的路径搜索技术基础知识
    基于搜索的路径规划目录基于搜索的路径规划1.0图搜索基础1.1ConfigurationSpace(配置空间)1.2C-spaceObstacle1.3总结2.0图和搜索技术2.1图2.2图搜索概述2.3图......
  • Markdown 语法
    <details><summary>折叠文本</summary>文本区域</details><details><summary>折叠代码块</summary><pre><code>System.out.println("虽然可以折叠......
  • 基础架构组件选型及服务化
    常见的分布式基础架构组件分布式服务化框架,业界开源产品比如Dubbo、SpringCloud这样的框架;分布式缓存及框架,业界如Redis、Memcached,框架如Codis和RedisCluster;数据......